Форум 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=120307)

nuToH 16.01.2009 20:39

Самоуничтожение экземпляра класса
 
Здравствуйте, :bye: если не сложно подскажите нубу как решить проблемку:

есть основной класс :rolleyes:

Код AS3:

package {
        import flash.display.Sprite;
        public class Entrance extends Sprite {
                public function Entrance() {
                        addChild(new Message("die,die my darling"));
                }
        }
}

класс Message

Код AS3:

package {
        import flash.display.Sprite;
        import flash.text.TextField;
        import flash.utils.setTimeout;
        public class Message extends Sprite {
                public function Message(message) {
                        var txt:TextField = new TextField();
                        txt.text=message;
                        addChild(txt);
                        setTimeout(delme,1000);
                }
                private function delme() {
                    trace("del me plzzz");
                    // нужно самоубиццо(
                }
        }
}

существует ли в ас3 что-то вроде removeMovieClip(this)?
или возможно ли реализовать это через parent removeChild и this ?
заранее спасиба) :rolleyes:

Gaen 16.01.2009 21:16

Код AS3:

if(this.stage)this.parent.removeChild(this)


nuToH 16.01.2009 21:26

спасиба! а что означает условие if(this.stage) ? ппц я тормоз)

DarkLight 16.01.2009 21:50

если объект еще не был добавлен на сцену, то this.stage возвращает null, т е проверяем его наличие на сцене, собственно

etc 16.01.2009 23:49

Наверное всё-таки
Код AS3:

if (super.parent) super.parent.removeChild(this);


Fergus 17.01.2009 14:15

removeChild же не уничтожит экземпляр, а просто уберет из displayList, мм?

Добавлено через 2 минуты
if (super.parent) super.parent.removeChild(this);

А зачем вызывать свойство супер-класса? У потомка же вроде как есть тот же parent.

etc 17.01.2009 14:21

Цитата:

Сообщение от Fergus (Сообщение 791504)
removeChild же не уничтожит экземпляр, а просто уберет из displayList, мм?

Если ссылки на него не останется, то удалит совсем.

Цитата:

Сообщение от Fergus (Сообщение 791504)
if (super.parent) super.parent.removeChild(this);

А зачем вызывать свойство супер-класса? У потомка же вроде как есть тот же parent.

Есть, но может быть переопределен тут же или в наследниках. Код не должен из-за изменений в наследниках работать некорректно.

з. Ы. И не лень же было раскрашивать код, когда есть тег [as3]?

Fergus 17.01.2009 14:23

Цитата:

Сообщение от __etc (Сообщение 791509)
з. Ы. И не лень же было раскрашивать код, когда есть тег [as3]?

Copy-Paste сразу раскрашенный дает :)

Obi 17.01.2009 14:33

Экземпляр уничтожается, когда на него не остается ссылок, а экземпляр сам себя null'ом сделать не может.

Яски 17.01.2009 16:46

Цитата:

Сообщение от __etc (Сообщение 791509)
Есть, но может быть переопределен тут же или в наследниках. Код не должен из-за изменений в наследниках работать некорректно.

Никак не могу этого понять. Такое ощущение, что код наследников писали вражеские программисты, цель которых запутать программу.


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

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