Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с removeChild (http://www.flasher.ru/forum/showthread.php?t=136479)

inferrum 18.02.2010 01:42

Проблема с removeChild
 
Всем привет.
Проблема в следующем.Имеется Спрайт с двумя кнопками.
После нажатия на одну из них - он должен отключить листенеры от этих кнопок и удалить себя с экрана.Но почему то этот процесс "залипает".То есть иногда спрайт нормально удаляется, а иногда он удаляется только после нескольких нажатий на кнопку(хотя листенер должен был удалиться после первого же).В чём может быть проблема?
Вот код:
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
        import flash.text.TextField;
 
        public class UserPanel extends Sprite
        {
 
                public function UserPanel()
                {
                        this.x = 320;
                        this.y = 250;
                        this.tabChildren = false;
                        this.tabEnabled = false;
 
                        this.resBtnIns.addEventListener(MouseEvent.CLICK, BtnClick);
                        this.mainBtnIns.addEventListener(MouseEvent.CLICK, BtnClick);
 
                }
 
          private function BtnClick(e:MouseEvent):void
                {  this.resBtnIns.removeEventListener(MouseEvent.CLICK, BtnClick);
                        this.mainBtnIns.removeEventListener(MouseEvent.CLICK, BtnClick);
                        parent.removeChild(this);
 
                        }
}
 
}


mayakwd 18.02.2010 02:49

super() в конструктор добавьте.

GentleFLASH 18.02.2010 03:42

А при чем тут super? Он и так компилятором добавится. Думаю что фокуса на объекте нет, поэтому первый клик активирует объект, а потом происходит само действо.

Jewelz 18.02.2010 09:49

так нехорошо писать

Код AS3:

parent.removeChild(this);


SamFR 18.02.2010 09:52

В приведённом коде вроде всё хорошо. Поэтому ищите, что ещё может вызывать глюк. Может быть, кнопка в определённые моменты перекрывается чем-то прозрачным, и соответственно не получает событий мыши. Может, создаётся несколько объектов UserPanel, расположенных друг над другом, и визуально удаления не происходит.

Либо приведите больше кода :)

Если вы запускаете мувик в составе html-страницы, убедитесь, что объект плеера имеет фокус, в противном случае первый клик не будет получен плеером, как уже сказали выше.

Добавлено через 46 секунд
Jewelz — почему?

Jewelz 18.02.2010 10:03

потому что чайлд должен событие посылать

mayakwd 18.02.2010 12:25

потому что надежда на авось да кабы часто заканчивается плачевно. и во всем будут винить компилятор


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

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