Можно ли временно удалить eventListener (т.е. до тех пор, пока не будет выполнена функция) - PullRequest
0 голосов
/ 06 июня 2011

В данный момент я делаю Actionscript 3 и мне было интересно, можно ли временно удалить EventListner. Однако я знаю о removeEventListener, который полностью удаляет eventListener, и я не могу снова нажать кнопку.

Если вам нужны более подробные сведения, вот точная проблема. У меня есть функция, что при нажатии кнопки появляется объект. В функции, которая создает этот объект, есть EventListener, который приводит к функции, которая позволяет пользователю нажимать этот объект. Когда вы нажимаете этот объект, он исчезает, и кнопка будет анимирована. Однако, так как оригинальный eventListener все еще существует, вы можете нажать объект во время движения и создать новый объект. Итак, к сути: я хочу отключить EventListener, когда кнопка движется, и повторно активировать ее, когда она остановится.

Ответы [ 2 ]

0 голосов
/ 06 июня 2011

Лучший способ - просто использовать флаг, который сообщает функции, завершена ли анимация или нет.Вот пример того, о чем я говорю, используя TweenLite в качестве библиотеки анимации:

public class CreateButton extends Sprite{
        private var animating:Boolean = false;

        public function CreateButton(){
            this.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
        }

        private function onClick(event:MouseEvent):void{
            if(this.animating == false){
                // Trigger creation functionality
                TweenLite.to(this, 0.5, {/* Parameters for the actual animation */ onComplete:animationComplete});      
                this.animating = true;
            }
        }

        private function animationComplete():void{
            this.animating = false;
        }
    }
0 голосов
/ 06 июня 2011

Рекомендуется удалить слушателя, если его функциональность отключена.Однако вы можете установить для .mouseEnabled значение false, если хотите отключить функцию щелчка, не удаляя прослушиватель.

...