1

これを使用して、AS3 でキーボード イベントを発生させます。

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

しかし、AS2 で同じことを達成する方法を理解できないようです。それは可能ですか? 外部 SWF に対してキー イベントを発生させる必要がありますが、SWF のソースがありません。

4

2 に答える 2

0

AS2 でのイベントのディスパッチは、AS3 とは多少異なります。AS3 のほとんどのクラスは既に EventDispatcher クラスを拡張していますが、AS2 ではそうではありません。

AS2 に関しては、EventDispatcher クラスを直接拡張できない場合、作成するクラス内にイベント ディスパッチャ オブジェクトを作成することを選択する人もいます。

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

....
....

どのイベントでも、そのイベントは最終的に文字列に変換されるため、適切な文字があれば、定数表現を使用せずに任意のイベントをディスパッチできます。

...
...
...
_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(new KeyboardEvent("keyUp"));

于 2013-04-01T14:24:23.293 に答える