您的位置:首页 > 其它

多媒体交互应用基础(7)

2008-12-29 17:32 232 查看
问题一:如何让复制影片剪辑产生动态旋转效果?

步骤:复制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;

看看他们会发生什么改变呢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: