1

こんにちは、私はフラッシュでゲームに取り組んでいます。このアプリのモバイル バージョンでは、ボタンのマウスダウン イベントで左、右のキーコードなどがアクティブになるようにしようとしていますか?

AS3 でキーボード キーをマウス クリックなどの他の手段でアクティブにする方法はありますか?

leftButton.addEventListener(MouseEvent.MOUSE_DOWN, leftKeyPress)
function leftKeyPress(e:MouseEvent){
    // Left Key is pressed
        Keyboard.LEFT;
        trace("trace statement");
}

このコードは機能していないようです

編集:これも重要です。このクラスとキーボードを使用するクラス(プレーヤー)は2つの別々のクラスにあるため、これをクリックするとキーボードのキー押下として認識されるようにしようとしています

4

2 に答える 2

0

キーボード イベントを手動でディスパッチできます。ただし、最適な設計パターンではありません。

dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN,
                                true,
                                false,
                                Keyboard.LEFT,
                                Keyboard.LEFT));

2 つのハンドラーを確立することをお勧めします。

addEventListener(KeyboardEvent.KEY_DOWN, moveKeyHandler);
addEventListener(MouseEvent.CLICK, moveMouseHandler);

各ハンドラーから、ハンドラーから移動関数を抽象化する関数を呼び出します。

protected function moveKeyHandler(event:KeyboardEvent):void
{
    /* switch statement for key */
    moveLeft();
}

protected function moveMouseHandler(event:MouseEvent):void
{
    /* switch statement for button target */
    moveLeft();
}

protected function moveLeft():void
{
}
于 2013-05-12T19:59:12.780 に答える
0

申し訳ありませんが、それはすべて間違っています。そのようなキーボードイベントをトリガーすることはできません。それがイベントをキャプチャする方法です。また、関数も MouseEvent です。キーボード イベントである必要があります。1年後にFlashをオープンしました。ともかく。AFAIは、マウスがどこかをクリックするまでキーボードを無効にしようとしていることを理解しています。

leftButton.addEventListener(MouseEvent.MOUSE_DOWN, leftKeyPress);
var keyEnabled:Boolean = false;
function leftKeyPress(e:MouseEvent){
    keyEnabled = true;
}

key.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);

function keyPressed(e:KeyboardEvent):void{
    if(keyPressed){
        //do whatever here
    }
}
于 2013-05-12T19:56:32.683 に答える