Форум Flasher.ru

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

tooth212 30.04.2014 22:50

Удаление обработчика события функции с параметрами
 
Добрый день, возникла проблема при удалении обработчики события функции с параметрами.
Код AS3:

stage.addEventListener(Event.ENTER_FRAME, function (e:Event){first(e,7,3)});
function first(e:Event,r:Number,h:Number):void
{
if(...){
 
                trace(1);
                stage.removeEventListener(Event.ENTER_FRAMEfunction (e:Event){first(e,7,3)});
        }
 
};

Удаление обработчика не прекращается, и продолжает выводить 1. Как это можно исправить?

bav 30.04.2014 23:54

Создайте кастомный класс событий, например, UserEvent и храните (и передавайте) параметры с его помощью. И не вешайте на прослушку анонимные функции, потом не отпишитесь, что и подтверждает ваш пример.

Добавлено через 3 минуты
Про пользовательские события почитайте у -De-.

elder_Nosferatu 01.05.2014 03:45

Советую прислушаться к предыдущему высказыванию ("не вешайте на прослушку анонимные функции"), но вообще можете попробовать следующий вариант:

Код AS3:

stage.addEventListener(Event.ENTER_FRAME, function (e:Event){first(e,7,3)});
function first(e:Event,r:Number,h:Number):void
{
if(...){
 
                trace(1);
                stage.removeEventListener(Event.ENTER_FRAMEarguments.callee);
        }
 
};


tooth212 01.05.2014 12:24

К сожалению, не помогло.
Цитата:

Сообщение от elder_Nosferatu (Сообщение 1165023)
Советую прислушаться к предыдущему высказыванию ("не вешайте на прослушку анонимные функции"), но вообще можете попробовать следующий вариант:

Код AS3:

stage.addEventListener(Event.ENTER_FRAME, function (e:Event){first(e,7,3)});
function first(e:Event,r:Number,h:Number):void
{
if(...){
 
                trace(1);
                stage.removeEventListener(Event.ENTER_FRAMEarguments.callee);
        }
 
};



Wolsh 01.05.2014 12:37

Анонимки — зло. Меняйте структуру. Здесь что-то инопланетное для AS3.
bav, пользовательский ENTER_FRAME? Редиспатчить что ли.. тогда от ентерфрейма то все-равно не отписать.. структура какая-то странная. Нужно понять задачу и изменить решение структурно.

bav 01.05.2014 16:07

А, ну да, туплю. tooth212, послушайте Wolsh'а.

tooth212 02.05.2014 11:50

Спасибо, решил задачу другим способом, совсем без функции с параметром.


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

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