我的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);
}
}
}
非常感谢你能帮助我!
答案 0 :(得分:0)
如果看到trace(i)的输出,则输出应始终为3。发生这种情况是因为调用eventHandler时,i的值已经增加到3.在索引3处,您没有任何障碍。
答案 1 :(得分:0)
欢迎来到封闭世界!
显然在ActionScript中你必须做一些hackery才能让它正常工作;这个问题询问你所处的情况几乎相同 - 答案对我有用: