我正在使用for循环向舞台添加多个对象,从那里我想为它们设置动画但是当我尝试只有一个球移动时。
这是我的代码。
(球从外部班级拉出来)
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
private var ball:Ball;
private var ax:Number = 4;
public function Main()
{
init();
}
private function init():void
{
for(var i:Number = 0; i < 10; i++)
{
ball = new Ball();
ball.x = Math.random() * stage.stageWidth;
ball.y = Math.random() * stage.stageHeight;
addChild(ball);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame1);
}
private function onEnterFrame1(event:Event):void
{
ball.x += ax;
}
}
}
谢谢!
答案 0 :(得分:2)
您应该将所有对象推入数组并更改每个球的x属性。
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
private var ball:Ball;
private var ax:Number = 4;
private var balls:Array;
public function Main()
{
init();
}
private function init():void
{
balls = new Array();
for(var i:Number = 0; i < 10; i++)
{
ball = new Ball();
ball.x = Math.random() * stage.stageWidth;
ball.y = Math.random() * stage.stageHeight;
addChild(ball);
balls.push(ball);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame1);
}
private function onEnterFrame1(event:Event):void
{
for(var i:int = 0; i < balls.length; i++)
{
balls[i].x += ax;
}
}
}
}
答案 1 :(得分:0)
创建10个球
private var ball:Ball;
var ball:Ball;
,在之前添加juste 。如果你不这样做,属于你的Main类的 ball 对象在你的循环中只更新了10次,但你仍然只得到一个对象。
动画10个球
你必须将球保存在一个容器中,因为你要从你班上的几个功能中访问它,所以必须属于你的主。
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip
{
private var ballsContainer:MovieClip;
private var ax:Number;
public function Main()
{
init();
}
private function init():void
{
ax = 4;
ballsContainer = new MovieClip();
addChild(ballsContainer);
var ball:Ball;
for (var i:Number = 0; i < 10; i++)
{
ball = new Ball();
ball.x = Math.random() * stage.stageWidth;
ball.y = Math.random() * stage.stageHeight;
ballsContainer.addChild(ball);
}
addEventListener(Event.ENTER_FRAME, onEnterFrame1);
}
private function onEnterFrame1(event:Event):void
{
for (var i:Number = 0; i < ballsContainer.numChildren; i++)
{
Ball(ballsContainer.getChildAt(i)).x += ax;
}
}
}
}
答案 2 :(得分:0)
你可以让球处理它自己的运动。
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.getTimer;
public class Ball extends MovieClip {
private var currentTime = getTimer();
public function Ball(){
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame1(event:Event):void {
diff = currentTime - prevTime;
x += diff * ax
prevTime = currentTime;//update for next go around
}
}
}
那么,为什么要使用计时器而不是帧来制作动画?嗯,你不必,但你不能总是确定两帧之间的时间。在这种情况下,即使您的帧速率不是这样,您的速度也始终保持不变。