![]() |
|
||||||||||
|
|||||
|
Всем привет.
Есть функция: var enArray:Array = new Array(); enArray[en_num] = new Enemy_01("right-left",1); addEventListener(Event.ENTER_FRAME,enArray[en_num].EnterFrame); addChild(enArray[en_num]); if (en_num>30) { en_num = 0; removeEventListener(Event.ENTER_FRAME,enArray[en_num].EnterFrame); removeChild(enArray[en_num]); } en_num++; Может кто подскажет какое друге решение для создания и удаления массива мувиков? |
|
|||||
var enArray:Array = []; for (var i:int = 0; i < 30; i++) { enArray.push(new Enemy_01("right-left",1)); } Чтобы удалить какой-то объект из массива, нужно сделать по-другому: |
|
|||||
|
caseyryan, честно говоря я не очень понял ваш пример.
Первый код ещё более-менее понятен. А вот второй, для меня по большей своей части - загадка. Особенно не понятно что такое someObject? Если я делаю вот так: То всюду -1 Если я этот шаг пропускаю и просто тупо удаляю в массиве объект - то на экране от этого ничего не меняется. Мувик всё так же находится на сцене. В общем, не очень помогает. А есть ещё варианты, кроме массива? Вот у меня игрушка. На экран - вылетают астероиды. Нужно чтоб при вылете ими за экран - они удалялись. Я пока что не очень понимаю как это сделать с помощью ассива, а других вариантов - я в сети не нашёл. Кто как подобное вообще делал? |
|
|||||
|
Если у тебя астероиды хранятся в каком-то отдельном мувике то ты можешь просто перебирать всех детей этого мувика и удалять тех детей которые вышли за экран. Допустим все астероиды находятся в мувике или спрайте(что бы меньше памяти занимал) под названием asteroidContainer тогда код для удаления астероидов ушедших за экран следующий(размер игровой области 550x400):
|
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
caseyryan пытался до вас донести, что удаление клипов из контейнера и удаление элемента из массива не одно и тоже. Удаление из массива не приводит к удалению клипа. Это надо делать в цикле.
Присвоение en_num = 0; у вас не удалит 30 клипов ![]() Добавлено через 5 минут И зачем их удалять, чтобы заново создать?) |
|
|||||
|
Судя по коду из первого поста, создается n мувиков и только последний записывается в только что созданный массив. Более того, каждые 31 помещаются в Display List, каждый 32-й сначала помещается в DL потом тут же удаляется...
С каждым циклом массив создается заново перезаписывая предыдущий. Или я что-то не понимаю? |
|
|||||
|
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
если у тебя отдельный контейнер для астеройдов, то зачем вообще массив нужен ? (тотже Sprite\Movieclip служит массивом)
зачем удалять астеройд который вылетел за экран ? просто назначь ему стартовые значения и он заного полетит |
|
|||||
|
Bletraut, попробовал ваш код - что-то не заработало.
Да и я уже решил другим способом. Пусть и с удалением ребёнка самим собой, но всё же. Цитата:
Цитата:
Такая задача. Сделал так: var en01_Mov:MovieClip; en01_Mov = new Enemy_01("right-left",enemy_speed); war_zone.addChildAt(en01_Mov,2); |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|