Могу ли я получить доступ к пулу событий флеш-плеера? - PullRequest
1 голос
/ 22 сентября 2009

Я хочу отслеживать каждое событие на каждом объекте, есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 22 сентября 2009

Да и нет.

Один из способов - просто переопределить функцию dispatchEvent:

override public function dispatchEvent(event:Event):Boolean
{
    // Do something with event.
    return super.dispatchEvent( event );
}

Проблема, однако, в том, что это не всегда работает - иногда dispatchEvent не вызывается, если дочерний объект что-то делает. Это также не будет работать, если вы не хотите создавать специальный класс для каждого экземпляра.

Другой альтернативой является перебор массива различных типов событий:

var evtTypes:Array = [ MouseEvent.CLICK, MouseEvent.ROLL_OVER, 
                       MouseEvent.MOUSE_DOWN...
                       Event.ADDED, Event.ADDED_TO_STAGE... etc.];

for( var i:int = 0; i < evtTypes.length; i++ )
{
    target.addEventListener( evtTypes[ i ], trace );
}

Проблема с этим методом в том, что вы не сможете захватывать пользовательские события, только события, которые есть в вашем списке. Я определенно рекомендовал бы второй метод для большинства проблем обучения и отладки.

Я полагаю, однако, более важный вопрос: «Что вы хотите сделать с этими событиями?» Большая часть документации перечисляет все события, которые объект отправит: если вы прокрутите документацию MovieClip , вы увидите пример.

0 голосов
/ 22 сентября 2009

Вы должны создать свой собственный реестр и получить к нему доступ таким образом. Так что да, есть способ сделать это, но нет, не легко.

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