Показать сообщение отдельно
Старый 20.07.2014, 03:15
infbyte вне форума Посмотреть профиль Отправить личное сообщение для infbyte Найти все сообщения от infbyte
  № 11  
Ответить с цитированием
infbyte

Регистрация: Jul 2013
Сообщений: 29
Сделал в цикле, заполнение массива и добавление на стол:
Код AS3:
myMovieClips.push(mc);
addChild(myMovieClips[n]);
Допустим у нас 50 карт.
Все создались - все ок.


Далее я создал кнопку "УДАЛИТЬ ВСЕ", которая удаляет все карты разом:

Код AS3:
for (var m = 0; m < myMovieClips.length; m++)
{
trace(myMovieClips.length);
 myMovieClips[m].parent.removeChild(myMovieClips[m]);
}
Все ок , удаляются нормально!



В каждой карте у меня есть событие на клик, которое производит удаление активной карты.
Код AS3:
mc.addEventListener(MouseEvent.CLICK, qwe333);
function qwe333(event:MouseEvent):void
	{
	 	var targetClip:MovieClip = event.target as MovieClip
		 if (targetClip.parent)  targetClip.parent.removeChild(targetClip);
	}


Начинаю удалять карты вручную, осталось 40 карт!
Нажимаю на "УДАЛИТЬ ВСЕ" , которая должна пробежаться по всему массиву(по 50 элементам) и удалить, но она возвращает ошибку TypeError: Error #1009: Cannot access a property or method of a null object reference.

Что я обращаюсь к уже удаленному объекту.

как я понял, я удалил не ячейки массива, а просто снял со сцены объекты и второй раз их снимать уже нельзя.


Подскажите плиз:
1)как при проходе через массив, не обходить те 10 , элементы которых где я уже применил removeChild?
2) при нажатии на "function qwe333" - как узнать к какому элементу массива относится эта карта?
Просто если бы я это смог узнать , в этой кнопке сразу бы и удалял ячейку через splice

Добавлено через 11 минут
UPD:
все вроде решил вопрос костылем.
через оператор try catch


Последний раз редактировалось infbyte; 20.07.2014 в 03:27.