返回“Flash基础理论课 - 目录”
动画事件
我们希望能够使用代码让物体动起来,并允许屏幕反复地刷新。前面看过一个使用enterFrame影片事件的示例。现在把这种方法运用到 AS 3 中,只需要增加一个enterFrame 事件的侦听器即可:
addEventListener(Event.ENTER_FRAME, onEnterFrame);
别忘了导入 Event 类,并创建一个名为 onEnterFrame 的方法。人们常常迷惑,只有一帧怎么能执行 enterFrame(进入帧) 事件呢?事实上,播放头并非真正地在进入下一帧,它只停留在第一帧上,并不是把播放头移动到下一帧才形成了 enterFrame 事件,而是用另一种方法:Flash 告诉播放头何时进行移动,可以把 enterFrame 看成一个定时器,只是有些不精确。
下面我们看看第一个AS 3 动画:
package {
import flash.display.Sprite;
import flash.events.Event;
public class FirstAnimation extends Sprite {
private var ball:Sprite;
public function FirstAnimation() {
init();
}
private function init():void {
ball = new Sprite();
addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.graphics.endFill();
ball.x = 20;
ball.y = stage.stageHeight / 2;
ball.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void {
ball.x++;
}
}
}
init函数创建了一个名为 ball的Sprite影片,并为其建立事件侦听。 onEnterFrame函数负责 ball 的运动及屏幕刷新工作。这是学习本书内容的基础,也是使用ActionScript 创建动画的基础,所以务必要掌握。