DisplayObjects作为动画帧? AS3

时间:2010-04-05 20:14:36

标签: flash actionscript-3

如何将displayObjects用作动画帧?
我的库中有六个符号,我想用计时器制作动画。优点是能够改变动画的速度,消除凌乱的时间线。

唯一的缺点是库中对象的初始设置。我已经尝试过开关/案例设计模式,visible = true和z-depth,但我无法让它正常工作。有什么答案吗?

//setup code
var timer:Timer = new Timer(100, 20);
timer.addEventListener(TimerEvent.TIMER, countdown);
function countdown(event:TimerEvent) {
    myText.text = String(0 + timer.currentCount);
}
timer.start();

var frame1:Frame1 = new Frame1;
addChild(frame1);
//frame1.visible = false

var frame2:Frame2 = new Frame2;
addChild(frame2);
//frame1.visible = false

var frame3:Frame3 = new Frame3;
addChild(frame3);
//frame1.visible = false

var frame4:Frame4 = new Frame4;
addChild(frame4);
//frame1.visible = false

var frame5:Frame5 = new Frame5;
addChild(frame5);
//frame1.visible = false

var frame6:Frame6 = new Frame6;
addChild(frame6);
//frame1.visible = false

1 个答案:

答案 0 :(得分:1)

像这样的东西。这是为了可读性而不是性能或可扩展性而编写的,但应该让您走上正确的轨道。

var frames:Array = [
    new Frame1(),
    new Frame2(),
    new Frame3(),
    new Frame4(),
    new Frame5(),
    new Frame6()
];

for each (var frame:Sprite in frames) {
    addChild(frame);
}

var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, countdown);
function countdown(event:TimerEvent) {
    myText.text = String(0 + timer.currentCount);
    var currentFrame:int = timer.currentCount % frames.length;
    for (var i:int = 0; i < frames.length; ++i) {
        frames[i].visible = (i == currentFrame);
    }
}
timer.start();