2013-03-31 3 views
1

Я использую это, чтобы вызывать события клавиатуры в AS3:розжига события клавиатуры в Actionscript 2.0

dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP,true,false,_charcode,_keycode)); 

Но я не могу понять, как добиться того же в AS2, такое возможно? Я должен запустить ключевое событие для внешнего swf, и у меня нет источника swf.

+0

Я не уверен, что это будет работать для событий клавиатуры, и я не сделал AS2 в течение веков, но если я помню правильно, вы бы использовать версию AS2 из mx.events.EventDispatcher сделать dispatchEvent в коде AS2. –

ответ

0

В AS1/2 отсутствует встроенная система диспетчеризации событий. AS1/2 использует обратные вызовы или обработчики. Вы можете написать свою собственную систему диспетчеризации, используя EventDispatcher класс http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00002329.html Но вам нужны пожарные события по вашему собственному коду.

1 способ: нажмите на баттоне и действия обработчика окна записи:

on (press) { 
    // do smth or dispatchEvent 
} 

2 пути: кнопку создать, выбрать их, задать имя экземпляра в панели Properties (. Для экс btnName), выберите в шкале времени кадра с кнопкой и в Actions окне напиши:

btnName.onPress = function() { 
    // do smth or dispatchEvent 
} 
0

диспетчерских событий в AS2 несколько отличается от AS3, так как большинство классов в AS3 уже расширить EventDispatcher класса, однако, в AS2, это не так.

В отношении AS2, некоторые люди предпочитают, чтобы создать объект диспетчера событий в пределах классов создавать, если они не могут непосредственно продлить EventDispatcher Класс:

public class Magic extends MovieClip{ 
    public var _dispatcher:EventDispatcher; 

.... 
.... 

Для любого события, это событие в конечном итоге приводит к String, поэтому если у вас есть правильные символы, вы можете послать любое событие, без использования постоянного представительства:

... 
... 
... 
_dispatcher.dispatchEvent(new KeyboardEvent(KeyboardEvent.UP)); 
// is the same as the following: 
_dispatcher.dispatchEvent(new KeyboardEvent("keyUp")); 

Итак, что вы хотите сделать, возможно, но это во многом зависит от того, как исходного кодера смоделировали свое сотрудничество де. Чтобы определить структуру кода, вы можете декомпилировать swf, используя ваш любимый декомпилятор, и отслеживать, где происходит «прослушивание». Затем вы можете попытаться настроить таргетинг на объект «диспетчеризации» и имитировать отправку, как вам нужно.

  1. декомпилировать swf, а также выяснить, что делает диспетчер, и тот, кто делает прослушивание.
  2. (Я предполагаю, что вы загружаете этот внешний swf). Загрузите swf и настройте мувиклип/объект, выполняющий диспетчеризацию:

    var _dispObject = _loadedSwf.mc.mc.mc.dispatchingObject;

  3. сделайте отправку, как вам потребуется.

    _dispObject.dispatchEvent (новый KeyboardEvent ("keyUp"));