多媒体交互应用基础(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;
看看他们会发生什么改变呢
步骤:复制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;
看看他们会发生什么改变呢