Flex: результат события несколько раз - PullRequest
0 голосов
/ 01 мая 2010

Я пытаюсь выучить Flex, и теперь у меня есть следующий код: http://pastebin.com/rZwxF7w1

Этот код для моего компонента входа. Я хочу получить специальную строку для шифрования моего пароля. Эта строка предоставлена ​​моим authservice. Но когда я вхожу в систему, я получаю несколько раз предупреждение «Готово» (строка 69 в коде вставки или строка 4 в коде внизу этого вопроса). Но я хочу, чтобы это показывалось один раз. Кто-нибудь знает, что не так с этим кодом?

Tom

protected function tryLogin():void {
                encryptStringResult.addEventListener('result', function(event:ResultEvent):void {
                    var encryptString:String = event.result.toString();
                    Alert.show('Done');
                });
                encryptStringResult.token = auth.getEncryptString();
            }

1 Ответ

2 голосов
/ 01 мая 2010

Возможно, что tryLogin вызывается несколько раз, что означает, что вы добавляете несколько обработчиков событий, которые делают одно и то же для одного и того же события.

Вы можете попробовать следующее:

protected function tryLogin():void {
            if (encryptStringResult.hasEventListener('result'))
                return;

            encryptStringResult.addEventListener('result', function(event:ResultEvent):void {
                encryptStringResult.removeEventListener('result', arguments.callee);
                var encryptString:String = event.result.toString();
                Alert.show('Done');
            });
            encryptStringResult.token = auth.getEncryptString();
        }

Сначала он проверит, имеется ли прослушиватель событий для 'result' , и в этом случае он просто вернется. Кроме того, он удалит (анонимный) прослушиватель событий, который добавляется при отправке события.

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