![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
Привет! Я недавно начал изучать AS3 и в реализации своей первого более менее серьезной задумки столкнулся с проблемой.
Проект - игра, скроллшутер. При клике рождается объект "Пуля" и при определенных координатах ( уход за область игры) она должна уничтожиться. Все ок когда пуля одна. Но тк мне надо чтобы я мог делать неограниченное количество выстрелов то я помещаю пули в массив и каждый кадр делаю апдейт циклом столько раз соклько пуль на сцене. Но когда пуля достигает координат в которых должна быть уничтожена возникает ошибка "ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта. Понятно что я как то неправильно удаляю. Подскажите, как правильно пожалуйста. Вот часть кода о которой я говорю. stop(); import flash.events.MouseEvent; import flash.display.MovieClip; import flash.events.Event; var numOfitems:Number=0; var bullets_arr:Array = new Array(); stage.addEventListener (MouseEvent .MOUSE_DOWN , addBullet); function addBullet(c:MouseEvent ):void { var bullet:mc_bullet = new mc_bullet(); addChild(bullet); bullets_arr.push(bullet); numOfitems = bullets_arr.length; } addEventListener(Event.ENTER_FRAME, moveBullet); function moveBullet(e:Event) :void { for(var i:int=0; i < numOfitems; i++ ) { bullets_arr[i].update(); if (bullets_arr[i].y < 200) { removeChild(DisplayObject(bullets_arr[i])); trace("bullet removed by range"); } } } Тут граница установлена в 200 пикселей сверху для наглядности исчезает пуля или нет. Спасибо ![]() Последний раз редактировалось iNils; 21.08.2011 в 15:39. |
|
|||||
|
а из массива удалять кто будет?
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
Я удалял из массива после removeChild та же ошибка, может сначала из массива удалить надо ?
|
|
|||||
|
Регистрация: Mar 2007
Сообщений: 545
|
Или обходите массив с конца
|
|
|||||
|
вообще тут, если этот класс - контейнер только для пулек ваших, достаточно работать с дисплей листом без всяких дополнительных массивов.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 545
|
TanaTiX
Не надо будет обновлять numOfitems |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 29
|
Забываю ага) исправлю.
А удалять из массива после removeChild через splice , правильно? Подскажите пожалуйста, где почитать про это? |
|
|||||
|
в хелпе, полагаю.)
просто без массива в цикле проходите всех детишек и нужные ремоувите.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|