|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
как удалить нажав на кнопку весь экземпляр класса, в котором находится эта кнопка
создаю в основном классе
объект этого класса, который содержит одну кнопку:
public class FloatingCont extends Sprite { public var _closeButton:Button = new Button("закрыть"); public function FloatingCont() { addChild(_closeButton); _closeButton.addEventListener(MouseEvent.CLICK, closeButtonLstner); } private function closeButtonLstner(e:MouseEvent):void { this.parent.removeChildAt(1); } } } parent.removeChildAt(1) удаляет, но нужно чтобы можно было указывать само имя объекта _floatingCont... parent.removeChild(_floatingCont) как-нибудь так или как мне перенести слушатель от кнопки в класс-родитель? подскажите как правильно делают в таких случаях? кажется, так неправильно Последний раз редактировалось nelco; 14.09.2015 в 11:03. |
|
|||||
Чем вас не устраивает удаление в основном классе, самому себя убивать классу не очень хорошая практика. Не он себя родил, не ему себя и убивать. Лучше сделать в классе FloatingCont деструктор и вызывать его из основного класса, его создавшего
public class FloatingCont extends Sprite { public var _closeButton:Button = new Button("закрыть"); public function FloatingCont() { addChild(_closeButton); _closeButton.addEventListener(MouseEvent.CLICK, closeButtonLstner); } public function destroy():void { _closeButton.removeEventListener(MouseEvent.CLICK, closeButtonLstner); } private function closeButtonLstner(e:MouseEvent):void { dispatchEvent(new Event("kill_me_please")) } } } public function Main() { _floatingCont = new FloatingCont() _floatingCont.addEventListener("kill_me_please", killHandler) addChild(floatingCont ) } private function killHandler(e:Event):void { var target:FloatingCont = FloatingCont(e.target); target.destroy() target.removeEventListener("kill_me_please", killHandler) removeChild(target) }
__________________
ответ прост: be || !be == true |
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
спасибо, понял, только через диспатчинг событий, получается? думал, что можно, может, из самого класса как-нибудь самого себя удалить правильно. как вы не путаетесь со всеми этими слушателями и ссылающимися друг на друга классами, я удивляюсь... :\ надеюсь, что у меня тоже так получится не путаться со временем, какой слушатель от чего и т.д. (ведь со временем этих всех объектов, слушателей - будет очень много в коде одного класса)
|
|
|||||
Это не правильно с точки зрения логики. У классов создателей могут быть свои планы, для какой-то цели они создали объект, ждут от него каких-то результатов деятельности, какие-то события, когда он им станет не нужен они должны от него избавиться, а тут он взял и сам себя убил, никому ничего не сказав. Так порядочные объекты не поступают. Для окончательного удаления объекта сборщиком мусора, нужно чтобы не было на него ссылок, сам объект не знает кто за ним следит, поэтому лучше чтобы он сказал о своем намерении убить себя, чтобы следящие за его поведением объекты смогли благополучно про него забыть.
__________________
ответ прост: be || !be == true |
|
|||||
Цитата:
Цитата:
__________________
тут я |
|
|||||
Цитата:
__________________
ответ прост: be || !be == true |
Часовой пояс GMT +4, время: 00:47. |
|
« Предыдущая тема | Следующая тема » |
|
|