![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
Привет!
Помогите, пожалуйста, справиться со следующей проблемой. В кадре на maintimeline есть я создаю экземпляр класса bomb и помещаю его в массив. В классе прописан алгоритм движения объекта а из кадра на таймлайне я вызываю апдейт массива с бомбами и проверяю циклом столкновения. Все работает хорошо. Но я хочу ограничить время жизни бомбы. Для этого в классе бомбы создаю функцию уничтожения и таймер вызывающий эту функцию. И не работает во первых не создается таймер, выдает ошибку "bomb.as, Line 14 1120: Access of undefined property bombTimer."и во-вторых не получается обратиться к переменным созданным на таймлайне "bomb.as, Line 33 1120: Access of undefined property bombs_arr." Надеюсь вы поможете мне разобраться. код класса бомба package { import flash.display.MovieClip; import flash.events.TimerEvent; import flash.utils.Timer; public class bomb extends MovieClip { public var bombSpeedX:Number=0; public var bombSpeedY:Number=0; public var goalX:Number; public var goalY:Number; public var bombTimer:Timer = new Timer(9000); bombTimer.addEventListener(TimerEvent.TIMER_COMPLETE, bombTimeOver); bombTimer.start(); public function bomb() { this.x=-5; this.y=-5; } public function bombTimeOver() { parent.removeChild(this); stage.bombs_arr.splice(this,1); stage.numOfBombs = bombs_arr.length; } public function update():void { this.x+=bombSpeedX; this.y+=bombSpeedY; if(this.x < goalX) { if(bombSpeedX<3) { this.bombSpeedX+=0.25; } } else { if(bombSpeedX>-3) { this.bombSpeedX-=0.25; } } if(this.y < goalY) { if(bombSpeedY<3) { this.bombSpeedY+=0.25; } } else { if(bombSpeedY>-3) { this.bombSpeedY-=0.25; } } } } } кусочек кода с таймлайна Спасибо! |
|
|||||
|
1 - Перестать писать код в фреймах и погуглить принципы ооп.
2 - Вы обращаетесь к stage бомбы , у вас не получиться оттуда обратиться к коду в таймлайне. вещайте события лучше.
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
1 - Перестать писать код в фреймах и погуглить принципы ооп.
Да, это уже понял в следующий раз обязательно. А сейчас у меня уже почти все готово в проекте если решить эту проблему.2. Что значит лучше вещать события? мне посоветовали решить это через (stage as Object). Пока остается проблема с таймером. |
|
|||||
var bomb_1 :bomb = new bomb(); bomb_1.addEventListener('bombDefuse' , bombDefuse); addChildAt(bomb_1,8); function bombDefuse(e:Event) { //удаляйте тут } BOMB : public function bombTimeOver() { dispatchEvent(new Event('bombDefuse')); } UP : function bombDefuse(e:Event) { removeChild(e.target as bomb); bombs_arr.splice(bombs_arr.indexOf(e.target as bomb),1); numOfBombs = bombs_arr.length; }
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
погуглил про dispatchEvent, логику понял но почему то не срабатывает.
во фрейме addEventListener('bombBorn' , bombBorn); function bombBorn(e:Event) { trace("Bomb_test_1"); } public function alienBombSpawn(event:TimerEvent) { trace("Bomb_test_2"); dispatchEvent(new Event('bombBorn')); } Bomb_test_2 - трейсится. Значит таймер срабатывает но почему то не передается event... (Слушатель стоит раньше чем создается экземпляр класса, если что) Ошибок никаких не выдает. Спасибо за помощь, чувствую я на верном пути, надо еще чутьчуть ![]() Последний раз редактировалось reQuiem; 07.09.2011 в 02:29. |
|
|||||
|
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
Цитата:
Заработало, спасибо ) |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| йне |
|
|