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

username100500 25.05.2011 17:34

Как убрать MovieClip с помощью removeChild
 
У меня есть класс. В нем объявляю popup типа MovieClip.
В MovieClip есть кнопка, при нажатии срабатывает eventlister, в котором я хочу убрать этот MovieClip.
Проблема в том, что при выполнении
Код AS3:

removeChild(popup);

Выдает ошибку.
Через this такая же ошибочка.

Вот что я придумал. Поместить popup еще в какой-то container и через него удалять popup:
Код AS3:

container.removeChild(popup);
                        popup= null;

Но как по мне это быдло-код. Как правильно убрать этот popup?
Спасибо

in4core 25.05.2011 17:52

покажите полный код. По логике

Код AS3:

class 
....
var mc:MovieClip = new Custom(); // has button
mc.button.addEventListener(ME.CLICK , click) ....  function click(e:Event) { removeChild(mc)  // ok }


username100500 25.05.2011 18:08

Код AS3:

public var popup:MovieClip = new MovieClip();
        public function closeWindow(evt:MouseEvent):void {
 
                        removeChild(popup);
                        popup = null;
 
                }
public function Windows_cls()
                {
...........
                        var l:Loader = new Loader();
                        l.load(new URLRequest("http://cdn1.iconfinder.com/data/icons/ose/Error.png"));
                        myRect.addChild(l);
                        l.addEventListener(MouseEvent.CLICK, closeWindow);
                        addChild(popup);
...........                       
 
                }

Вешаю eventlistener на лоадер(в лоадере картинка - кнопка-крестик). В этом наверное ошибка? И как тогда?

DZHETIGAPA 25.05.2011 18:15

Вы бы хоть написали, что за ошибку выдает.

Код AS3:

myRect.addEventListener(MouseEvent.CLICK, closeWindow);


username100500 25.05.2011 18:17

Ой, сорри. Не скопипастил

[Fault] exception, information=ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.

DZHETIGAPA, в MyRect помимо лоадера есть еще элементы. Потому на лоадер и повесил слушатель

DZHETIGAPA 25.05.2011 18:25

Добавь лоадер в какой-нибудь контейнер.

Хотя я всегда жду события COMPLETE.

Код AS3:

var l:Loader = new Loader();
l.load(new URLRequest("http://cdn1.iconfinder.com/data/icons/ose/Error.png"));
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
 
private function onComplete(e:Event):void
{
    myRect.addChild(e.target.content);
    e.target.content.addEventListener(MouseEvent.CLICK, closeWindow);
}


username100500 25.05.2011 19:51

DZHETIGAPA, взял ваш код. listener не срабатывает. Правда в контейнер я не добавлял.
Я не спец во FlashDevelop, но обычно если свойство существует, оно его подсказывает.
target в e подсказало, а вот content - нет.
Не значит ли это, что этого свойства нет

КорДум 25.05.2011 20:03

Код AS3:

(e.target as Loader).content.addEventListener(MouseEvent.CLICK, closeWindow);


username100500 25.05.2011 20:08

О, хоть какой-то прогресс))
[Fault] exception, information=TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

Попробовал повесить слушатель не в onComplete - ничего не происходит - слушатель не срабатывает

DZHETIGAPA 25.05.2011 21:06

Ты лучше напиши код, что ты там делаешь.


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

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