Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Удаление слушателя и swf-ки (http://www.flasher.ru/forum/showthread.php?t=178285)

Sweet07 18.04.2012 16:02

Удаление слушателя и swf-ки
 
Доброго времени суток.
Столкнулся с такой задачей: Загружаю через addChild() на сцену swf-ку с слушателем ENTER_FRAME в ней, затем removeChild() убираю, но этот слушатель висит и вылетает ошибка:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at t2_fla::MainTimeline/checkMe()
Смысл ошибки понятен, но обойти её обойти не получается. пробовал добавить в swf-ку другой слушатель.
Код swf-ки:
Код AS3:

addEventListener(Event.ENTER_FRAME, isOnStage);
function isOnStage(e:Event): void {
  if (parent.contains(this)==true) {
trace("всё ещё тут")
} else {
    trace("меня удалили");
    removeEventListener(Event.ENTER_FRAME, isOnStage);
    removeEventListener(Event.ENTER_FRAME, checkМе);
  }
}
addEventListener(Event.ENTER_FRAME, checkMe);
function checkMe(e:Event):void {
trace("__");
}

При удалении removeChild() событие trace(__) продолжает выполняться. Решить проблему...
...пока никак. Есть идеи?

КорДум 18.04.2012 16:07

Код AS3:

if (parent.contains(this)==true)

Если parent не содержит this, то parent == null. А у null метода contains() нет.

Sweet07 18.04.2012 16:57

Буду знать, но проблема ещё актуальна.

Добавлено через 17 минут
Нашел решение.
В основном файле, куда грузится swf-ка:
Код AS3:

var loader:Loader = new Loader(); 
loader.load ( new URLRequest ( "swf-ка.swf" ) );
addChild ( loader );
stage.addEventListener ( MouseEvent.CLICK, unloadSWF );
function unloadSWF ( e:MouseEvent ):void
{
 loader.unloadAndStop();
}

Это точно останавливает всё.

RJ Presto 18.04.2012 23:35

а еще есть события Event.ADDED_TO_STAGE и Event.REMOVED_FROM_STAGE
последнее как раз для вас


Часовой пояс GMT +4, время: 01:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.