|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Простой способ определения существования объекта
Есть какой-нибудь простой и эффективный способ определения наличия объекта? Пример:
var tmpObj:objClass; stage.addEventListener(MouseEvent.MOUSE_DOWN,putObject); stage.addEventListener(MouseEvent.MOUSE_UP,killObject); function putObject(e:MouseEvent):void{ tmpObj = new objClass(); addChild(tmpObj); setTimeout(destroyer,3000); } function destroyer():void{ if(!tmpObj) return; // не работает tmpObj.parent.removeChild(tmpObj); } function killObject(e:MouseEvent):void{ if(tmpObj!=null) return; // не работает tmpObj.parent.removeChild(tmpObj); }
__________________
uglan |
|
|||||
Вот этот метод используйте
http://help.adobe.com/ru_RU/FlashPla...html#contains() |
|
|||||
Вот так надо написать:
function killObject(e:MouseEvent):void{ if(tmpObj == null) return; tmpObj.parent.removeChild(tmpObj); } Переводя на человеческий язык, в этом методе у вас было естественно ссылка жива, и до tmpObj.parent.removeChild(tmpObj); исполнение не доходит Цитата:
|
|
|||||
В вашем случае нужно проверять добавлен ли объект на сцену.
Последний раз редактировалось alexandrratush; 07.11.2013 в 19:58. |
|
|||||
function killObject(e:MouseEvent):void{ if(tmpObj == null) return; tmpObj.parent.removeChild(tmpObj); } Contains спасает, но он срабатывает также на вновь созданные инстансы. Там у меня setTimer стоит который вырубает объект созданный повторно...
__________________
uglan Последний раз редактировалось uglan; 07.11.2013 в 19:21. Причина: тупанул |
|
|||||
Цитата:
|
|
|||||
Цитата:
TypeError: Error #1009: Cannot access a property or method of a null object reference. Пока лидирует contains, но это из той же области что и getChildByName. Неужели нет никакого простого способа?
__________________
uglan |
|
|||||
разберитесь, что вы хотите проверять.
Добавлено через 40 секунд |
|
|||||
О! Вот этот способ работает!)
У меня вылетает описанная выше ошибка при попытке обратиться к объекту который еще не был создан(не инициализирован и не добавлен в сцену) или уже удален, соответственно я ищу способ как это обойти. На что конкретно ругается флеш мне не понятно толи на отсутствие объекта в сцене то ли на его отсутствие в памяти. Однако если принудительно не обнулять(tmpObj=null) объект остается в памяти, так?
И еще не совсем понимаю почему tmpObj.parent!=null проверяет наличие объекта в сцене. Я и раньше сталкивался с таким примером, но в этом случае мы ведь получается проверяем существует ли родитель tmpObj а не сам объект? Разве нет?
__________________
uglan Последний раз редактировалось uglan; 08.11.2013 в 00:34. Причина: дополнение |
|
|||||
Цитата:
но не так uglan, вам показали рабочие способы. Вам стоит определить куда же все-таки добавляется объект и откуда он удаляется. Это должен быть один и тот же контейнер, чтобы все работало. п.с. Ни один из способов не показывает наличие / отсутствие объекта в памяти. Это лишь проверка наличия ссылки на него |
Часовой пояс GMT +4, время: 14:50. |
|
« Предыдущая тема | Следующая тема » |
Теги |
null , removeChild , undefined |
|
|