问题一:如何让复制影片剪辑产生动态旋转效果?
步骤:复制10个小球,将每一个小球用数组管理。然后为数组里面每一个对象更改位置,和角度让其产生旋转效果
- package
- {
- import flash.display.MovieClip;
- import flash.events.*;
- import flash.display.SimpleButton;
- public class Example extends MovieClip
- {
- private var R:int=120;//半径长度
- private var angle:Number;//每一个小球相差的角度数
- private var speed:Number=0;//小球的运动速度
- private var list:Array=new Array();
- public function Example()
- {
- init();
- }
- private function init():void
- {
- for (var i:int=0; i <10; i++)
- {
- angle=2 * Math.PI / 10 * i + speed;
- var obj:mc=new mc;
- addChild(obj);
- list.push(obj);
- trace(list);
- obj.x=stage.stageWidth / 2 + Math.cos(angle) * R;
- obj.y=stage.stageHeight / 2 + Math.sin(angle) * R;
- obj.addEventListener(Event.ENTER_FRAME,Run);
- }
- }
- private function Run(e:Event):void
- {
- speed+= 0.005;
- for (var j:int=0; j < 10; j++)
- {
- var angle:Number=(2 * Math.PI / 10 )* j + speed;
- list[j].x=stage.stageWidth / 2 +Math.cos(angle) * R;
- list[j].y=stage.stageHeight / 2 +Math.sin(angle) * R;
- }
- }
- }
- }
第一步:复制10个小球在场景里面。
第二步:让10小球压栈,用数组管理。 list.push()
第三步:让速度每一帧产生改变,并循环为每一个小球改变位置,改变角度。
这样效果就出来了
如果改变一下其R半径,就可以实现椭圆的算法。小球围绕的轨迹运动是椭圆曲线。
如:
- list[j].x=stage.stageWidth / 2 +Math.cos(angle) *R;
- list[j].y=stage.stageHeight / 2 +Math.sin(angle) *30;
- list[j].x=stage.stageWidth / 2 +Math.cos(angle) *30;
- list[j].y=stage.stageHeight / 2 +Math.sin(angle) *R;
看看他们会发生什么改变呢