1

我的 AS3 flash 脚本有问题。

我有一个包含 3 个电影剪辑项目的数组,我想在每个项目之间以 1 秒的计时器延迟播放每个项目。但是,当在“播放”实例周围放置一个计时器类时,它会返回一个未定义属性的错误。

//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);
            }
        }
}

如果你能帮助我,非常感谢!

4

2 回答 2

0

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

于 2013-02-15T14:13:04.390 回答
0

欢迎来到封闭的世界!

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

as3中如何将变量绑定到函数

于 2013-02-18T21:41:35.870 回答