Actionscript 3 在计时器类中包含时,播放函数未定义?闪光AS3
我的AS3 flash脚本有问题 我有一个3个movieclip项目的数组,我想在每个项目之间播放一个1秒的计时器延迟。但是,当在“play”实例化周围放置计时器类时,它返回一个未定义属性的错误Actionscript 3 在计时器类中包含时,播放函数未定义?闪光AS3,actionscript-3,flash,timer,playback,Actionscript 3,Flash,Timer,Playback,我的AS3 flash脚本有问题 我有一个3个movieclip项目的数组,我想在每个项目之间播放一个1秒的计时器延迟。但是,当在“play”实例化周围放置计时器类时,它返回一个未定义属性的错误 //Randomise MC array function randomSort(a:*, b:*):Number { if (Math.random() < 0.5) return -1; else return 1; } var obstacleArray:Array = [o
//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);
}
}
}
//随机化MC数组
函数随机排序(a:*,b:*):编号
{
if(Math.random()<0.5)返回-1;
否则返回1;
}
var obstaclarray:Array=[obstacleCar,obstacleCar2,obstacleCar3];
obstacleArray.sort(随机排序);
痕迹(障碍物射线);
跟踪(obstacleArray.length);
//进入帧后,最初延迟1秒
var timerPlay:定时器=新定时器(1000,1);
timerPlay.addEventListener(TimerEvent.TIMER,ontimerPlay);
timerPlay.start();
函数ontimerPlay(evt:TimerEvent):无效{
//对于每个障碍物,将每个项目延迟1秒,穿过阵列
对于(var i:Number=0;i如果您看到跟踪(i)的输出,则输出应始终为3。这是因为当调用eventHandler时,i的值已经增加到3。在索引3处,您没有任何障碍。欢迎来到闭包世界
显然,在ActionScript中,你必须进行一些黑客操作才能使其正常工作;这个问题询问的情况与你所处的情况几乎相同——答案对我有效:
您不能在嵌套函数中使用“i”变量。@Vesper我在Flash CS5中复制粘贴时,在嵌套函数中没有看到任何关于i用法的错误/警告。有人建议我应该使用返回函数?只有在for循环中开始使用timerDelay timer类时,问题才会出现