2014-02-06 2 views
0

Я делаю игру в AS3, и я хотел бы случайно добавить анимацию на экран, когда таймер будет завершен.random movieClips, когда таймер завершен

Exemple:

something.addEventListener(TimerEvent.TIMER_COMPLETE, Finish); 

function Finish(event : TimerEvent) : void { 
randomly add movieClip1 or movieClip2 or movieClip3 
} 

Как я могу это сделать?

Большое спасибо.


EDIT

Спасибо ваше для вашего ответа. Я пробовал много вещей, но на самом деле ничего не работает .. Я пробовал:

_movieClips.push(new _classes[Math.floor(Math.random() * _classes.length)]()); // this line chooses a random index of your _classes Array which will return the Class at that index 
stageRef.addChild(_movieClips[_movieClips.length-1]); 
if (stageRef.getChildByName("_movieClips[0]") == null) { 
trace("poubelle1"); 
_movieClips[0].addEventListener(MouseEvent.CLICK, removePoubelle, false, 0, true); 
}else if (stageRef.getChildByName("_movieClips[1]") == null) { 
trace("poubelle2"); 
_movieClips[1].addEventListener(MouseEvent.CLICK, removePoubelle2, false, 0, true); 
}else if (stageRef.getChildByName("_movieClips[2]") == null) { 
trace("poubelle3"); 
_movieClips[2].addEventListener(MouseEvent.CLICK, removePoubelle3, false, 0, true); 
} 

нет ошибок, но я могу только нажать, если только появится MovieClip. Если я жду, а второй появится, я не могу нажать ни на одну из них.

Я пробовал:

_movieClips.push(new _classes[Math.floor(Math.random() * _classes.length)]()); // this line chooses a random index of your _classes Array which will return the Class at that index 
stageRef.addChild(_movieClips[_movieClips.length-1]); 
if (_movieClips[0].visible== true){ 
trace("poubelle1"); 
_movieClips[0].addEventListener(MouseEvent.CLICK, removePoubelle, false, 0, true); 
} 
if (_movieClips[1].visible== true){ 
trace("poubelle2"); 
_movieClips[1].addEventListener(MouseEvent.CLICK, removePoubelle2, false, 0, true); 
} 
if (_movieClips[2].visible== true){ 
trace("poubelle3"); 
_movieClips[2].addEventListener(MouseEvent.CLICK, removePoubelle3, false, 0, true); 
} 

Но Error # 1010: Термин не определен и не имеет свойств. Знаете ли вы, как я могу это сделать? Спасибо!

ответ

0

Вы можете использовать массив 'загружен' с именами класса:

var _classes:Array = new Array(movieClip1, movieClip2, movieClip3); 
var _movieClips:Array = new Array(); // this Array is used to instantiate your random MovieClips 

Затем в таймер закончил обработчик:

_movieClips.push(new _classes[Math.floor(Math.random() * _classes.length)]); // this line chooses a random index of your _classes Array which will return the Class at that index 
addChild(_movieClips[_movieClips.length-1]); 
+0

Извините, но я получил эту ошибку: Error # 1007: Мгновенное действие предпринято для неконструктора. Ты знаешь почему ? (это для этой строки: _movieClips.push (новый _classes [Math.floor (Math.random() * _classes.length)]);) – user2421975

+1

Возможно, вам придется добавить пару пустых скобок() после второй квадратной скобки, т.е. - в конце строки: ... * _classes.length)]()); Обычно они используются для передачи параметров вашему недавно созданному классу. Другая проблема может заключаться в том, как вы заполняете свой массив _classes. Не переходите в строки: т.е. NOT "movieClip". Вы хотите movieClip, чтобы вы передавали класс, а не String-of-the-the-the-class. Дайте мне знать, если это еще не сработает. – moosefetcher

+0

Отлично! это были скобки. Спасибо ! – user2421975

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