Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在计时器类中包含时,播放函数未定义?闪光AS3_Actionscript 3_Flash_Timer_Playback - Fatal编程技术网

Actionscript 3 在计时器类中包含时,播放函数未定义?闪光AS3

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

我的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 = [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类时,问题才会出现