Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как убрать MovieClip с помощью removeChild (http://www.flasher.ru/forum/showthread.php?t=156682)

goodguy 25.05.2011 21:14

Цитата:

e.target.content.addEventListener(MouseEvent.CLICK, closeWindow);
Вообще, такую конструкцию как раз и можно назвать быдлокодом )

Программе не известно, какой точно тип контента загрузился.
Я бы сначала присвоил это к переменной и привел ее к нужному типу, а уже потом вешал на нее слушатель.
Типа того:
Код AS3:

var image:Bitmap = e.target.content as Bitmap;


DZHETIGAPA 25.05.2011 22:57

Цитата:

Сообщение от goodguy (Сообщение 998778)
Вообще, такую конструкцию как раз и можно назвать быдлокодом )
Программе не известно, какой точно тип контента загрузился.
Я бы сначала присвоил это к переменной и привел ее к нужному типу, а уже потом вешал на нее слушатель.
Типа того:
Код AS3:

var image:Bitmap = e.target.content as Bitmap;


В моем примере была описана суть. Его непонятная ошибка явно не из-за этого.

goodguy 26.05.2011 08:14

ну эта ошибка фиксится просто.
Код AS3:

var myparent:DisplayObjectContainer = parent as DisplayObjectContainer;
if (myparent)  if (myparent.contains(this)) removeChild(this);


username100500 26.05.2011 11:25

Вот, привожу весь код. Слушатель по-прежнему не срабатывает.
Код AS3:

        public class Windows extends MovieClip
        {
                public var popup:MovieClip = new MovieClip();
                private var description:MovieClip = new MovieClip();
                private function create_rect(width:Number=10.0, height:Number=10.0) : Sprite
                {
                        var s:Sprite = new Sprite();
                        s.graphics.lineStyle(0.25, 0x999999, 1.0);
                        s.graphics.beginFill(0xCCCCCC, 1.0);
                        s.graphics.drawRect(0.0, 0.0, width, height);
                        s.graphics.endFill();
 
                        return s;
                }
                public var myRect:Sprite = create_rect(190.0, 190.0);
                public function closeWindow(evt:MouseEvent):void {
                        trace("i was here");
 
                        removeChild(popup);
                        popup = null;
                }
                private function onComplete(e:Event):void
                        {
                                var image:Bitmap = e.target.content as Bitmap;
 
                                image.scaleX = 0.4;
                                image.scaleY = 0.4;
 
                                image.x = myRect.width - 30;
                                image.y = myRect.height - 30;
 
                                myRect.addChild(image);
 
                                image.addEventListener(MouseEvent.CLICK, closeWindow);
 
 
                        }
 
                public var container:MovieClip = new MovieClip();
                public function Windows()
                {
 
                        description.x = 10;
                        description.y = 10;
 
                        var sometext:TextField = new TextField();
                        sometext.text = "Here will locate some desc";
                        sometext.width = 180;
                        sometext.height = 180;
 
                        popup.addChild(myRect);
                        myRect.addChild(description);
                        description.opaqueBackground = 0xFFFFFF;
                        myRect.x = 30;
                        myRect.y = 30;
                        description.addChild(sometext);
                        description.width = sometext.width-description.x;
                        description.height = sometext.height - description.y;
 
                        var l:Loader = new Loader();
                        l.load(new URLRequest("http://cdn1.iconfinder.com/data/icons/ose/Error.png"));
                        l.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
 
                        addChild(popup);
 
 
                }
 
        }


fish_r 26.05.2011 11:43

Первая ошибка говорит о том, что вы удаляете то, что не добавляли, этого мувика нет на сцене, похоже.
Вторая ошибка о том, что вы удаляете мувик из контейнера где его нет. Т.е. такой объект есть, но не в этом контейнере
и не факт, что в DisplayList.
Тут не прав.
Если он на сцене все же есть такая инструкция не должна выдать ошибку:
Код AS3:

    mc.parent.removeChild(mc);


username100500 26.05.2011 12:34

Всем спасибо за помощь!
fish_r, ваш код - то, что нужно было.


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

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