2013-02-15 1 views
1

У меня проблема с моим скриптом AS3 flash.Функция воспроизведения не определена, если она установлена ​​в классе таймера? Flash AS3

У меня есть массив из 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

Вы не можете использовать «я» переменные внутри вложенную функцию. – Vesper

+0

@Vesper Я не видел никаких ошибок/предупреждений об использовании i в вложенной функции при копировании в Flash CS5 – abnvp

+0

Было предложено использовать функцию возврата? Проблема возникает только в тот момент, когда я начинаю использовать таймер-таймер в цикле for – user2075625

ответ

0

Добро пожаловать в мир закрытий!

Очевидно, что в ActionScript вам нужно сделать хакерство, чтобы заставить это работать правильно; этот вопрос касается довольно много той же ситуации, в которой вы находитесь - ответ работал для меня:

How do you bind a variable to a function in as3

0

Если вы видите вывод трассировки (i), выход должен быть 3 всегда. Это происходит потому, что когда вызывается eventHandler, значение i уже увеличивается до 3. При индексе 3 у вас нет никаких препятствий.

 Смежные вопросы

  • Нет связанных вопросов^_^