ActionScript 3 - анонимная функция, так как обработчик клика вызывается несколько раз за клик - PullRequest
1 голос
/ 16 августа 2010

У меня есть кнопка с надписью 'blueButton', и я хотел бы использовать анонимную функцию для обработки клика, например так:

blueButton.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
 trace( "-----click detected-----" );
 // now do other stuff
});

Проблема в том, что обработчик клика вызывается несколько раз за клик. Количество звонков кажется случайным (иногда 2, иногда 4, иногда 3 и т. Д.). Могу ли я что-то упустить в своем коде, или, возможно, я неправильно настроил кнопку?

также я заметил, что он, кажется, всегда вызывается один раз при первом нажатии. После первого щелчка, когда он начинает вызываться дополнительные времена, может быть, это как-то связано с этим?

заранее спасибо за любую помощь

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Откуда вызывается blueButton.addEventListener? Возможно, что строка вызывается несколько раз, что может добавить несколько прослушивателей, особенно если она добавляется после некоторого состояния представления, например, в коде onShow. Попробуйте добавить трассировку («---- добавление прослушивателя событий ----» чуть выше blueButton.addEventListener и убедитесь, что он отображается только один раз.

Кроме того, вы пробовали код, содержащий только оператор trace ()? Это все еще проблема тогда? Вы можете разделить другое, удалив весь другой код в слушателе событий. Существует небольшая вероятность того, что «другие вещи» могут запускать код, который снова добавляет прослушиватель событий кнопки.

0 голосов
/ 17 августа 2010

Вы также можете попробовать

event.stopImmediatePropagation;
0 голосов
/ 17 августа 2010

Я бы попытался исправить это, выполнив 2 действия:

1) Убедитесь, что вы установили blueButton.mouseChildren = false.При определенных событиях мыши, если в указанном DisplayObject есть другие дочерние объекты DisplayObject, flash отправит событие мыши для каждого дочернего объекта.

2) Не используйте анонимные функции, потому что Flash работает немного странно, когда вы используетеих иногда.У меня была та же проблема, что и у вас, и когда я перестал использовать анонимную функцию, проблема исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...