Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   правильное удаление слушателей при наследовании (http://www.flasher.ru/forum/showthread.php?t=130358)

random13 24.09.2009 16:16

правильное удаление слушателей при наследовании
 
есть класс который наследуется от MovieClip,
к конструкторе определяется слушатель
Код AS3:

this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

ну и callback его
Код AS3:

public function onAddedToStage(e:Event):void {
                        this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
                        parent.addEventListener(GeometryEvent.UPDATE_CORD_POINT, updateXYCordPoint);
                }

смотрим далее

есть другой класс который наследуется от этого
в нем нужно переопределить тот самый callback
Код AS3:

override public function onAddedToStage(e:Event):void {
                        super.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
                        parent.parent.addEventListener(GeometryEvent.UPDATE_CORD_POINT, updateXYCordPoint); // добавляем нового слушателя
                        this.addEventListener(GeometryEvent.DELETE_POLY_POINT, deletePointFromPoly);
                }

возник вопрос понимания, в случае если б в родительском классе слушатель весел на parent..... как его нужно затереть из потомка в переопределенном методе

Gaen 24.09.2009 17:10

Внутри обработчика события можно отписаться от него, ничего больше не зная:
Код AS3:

(e.target as IEventDispatcher).removeEventListener(e.type, arguments.callee)


wvxvw 24.09.2009 17:24

Код AS3:

parent.parent.addEventListener(GeometryEvent.UPDATE_CORD_POINT, updateXYCordPoint);

Вот эта строчка очень жестокая... а что если parent == root или stage?

random13 24.09.2009 17:25

воо это уже интересный момент, всегда была идея именно такой отписки, спасибо буду использовать,

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

Добавлено через 56 секунд
Цитата:

Сообщение от wvxvw (Сообщение 853153)
Код AS3:

parent.parent.addEventListener(GeometryEvent.UPDATE_CORD_POINT, updateXYCordPoint);

Вот эта строчка очень жестокая... а что если parent == root или stage?

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


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

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