Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как удалить объект со сцены по окончанию Tween? (http://www.flasher.ru/forum/showthread.php?t=150069)

Psycho Tiger 05.02.2011 23:05

mikhailk, всё чуточку проще.
DisplayObject#parent имеет тип DisplayObjectContainer, в котором уже определен метод removeChild.
Достаточно написать так:
Код AS3:

var parent:DisplayObjectContainer=object.parent;
if (parent) parent.removeChild(object);


mikhailk 05.02.2011 23:07

ну да, не имеет ))

@Psycho Tiger
да, так проще

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

i.o. 05.02.2011 23:08

А я бы вообще так написал:
Код AS3:

if( obj && obj.parent )
    obj.parent.removeChild( obj );

Вот такое никогда ошибок не выкинет. Только если не фатально болен сам плеер ...

Psycho Tiger 05.02.2011 23:24

Выкинет, если obj.parent подписан на Event.REMOVED и выкидывает в хэндлере исключение =)

Вообще даже в таких случаях я не ленюсь создать событие с bubbles=true, type="removeMe!!!", которое ловил бы ответственный сверху.

i.o. 05.02.2011 23:25

Цитата:

Выкинет, если obj.parent подписан на Event.REMOVED и выкидывает в хэндлере исключение =)
можно с примером? )

Psycho Tiger 05.02.2011 23:45

Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class Jigsaw extends Sprite
        {
 
                public function Jigsaw()
                {
                        super();
                        var p:Sprite = new Sprite();
                        p.addEventListener(Event.REMOVED, handler);
                        var c:Sprite = new Sprite();
                        p.addChild(c);
 
                        c.parent.removeChild(c);
                }
 
                private function handler(event:Event):void {
                        throw new Error();
                }
        }
 
}

Я прикалываюсь просто )

i.o. 05.02.2011 23:48

не, ну это уже перебор)

mikhailk 05.02.2011 23:53

сорри за вопрос не по теме, а зачем тут super()?

i.o. 05.02.2011 23:59

вызвать конструктор суперкласса Sprite, если нет уверенности вызывается он по-дефолту до или после конструктора класса-наследника..

Psycho Tiger 06.02.2011 00:06

super, в случае его явного отсутствия в коде, всегда вызывается перед началом исполнения конструктора (т.е. вставляется первой строчкой конструктор).
Писать super() — это хороший тон и всё такое )


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

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