在计时器类中加入时,播放功能是否未定义? Flash AS3

时间:2013-02-15 13:27:26

标签: actionscript-3 flash timer playback

我的AS3 Flash脚本出现问题。

我有一个包含3个动画片段项目的数组,我希望每个项目之间的定时器延迟为1秒。但是,当在'play'实例化周围放置一个计时器类时,它会返回一个未定义属性的错误。

//Randomise MC array
function randomSort(a:*, b:*):Number
{
    if (Math.random() < 0.5) return -1;
    else return 1;
}
var obstacleArray:Array = [obstacleCar,obstacleCar2,obstacleCar3];
obstacleArray.sort(randomSort);


trace(obstacleArray);
trace(obstacleArray.length);

//Delay initially 1 second upon entering frame
var timerPlay:Timer = new Timer(1000,1);
timerPlay.addEventListener(TimerEvent.TIMER, ontimerPlay);
timerPlay.start();
function ontimerPlay(evt:TimerEvent):void{

    //FOR EACH OBSTACLE, Run through array delaying each item by 1 second

    for(var i:Number=0; i<obstacleArray.length; i++){

        var timerDelay:Timer = new Timer(1000,1);
        timerDelay.addEventListener(TimerEvent.TIMER, ontimerDelay);
        timerDelay.start();
        function ontimerDelay(evt:TimerEvent):void{

        obstacleArray[i].play();
        trace(obstacleArray[i]);

        trace(i);
            }
        }
}

非常感谢你能帮助我!

2 个答案:

答案 0 :(得分:0)

如果看到trace(i)的输出,则输出应始终为3。发生这种情况是因为调用eventHandler时,i的值已经增加到3.在索引3处,您没有任何障碍。

答案 1 :(得分:0)

欢迎来到封闭世界!

显然在ActionScript中你必须做一些hackery才能让它正常工作;这个问题询问你所处的情况几乎相同 - 答案对我有用:

How do you bind a variable to a function in as3