1

数時間試してみましたが、小さなキャラクターをキーボードで動かすことができません。

何かが起こっているかどうかを確認するためにトレースを実行しましたが、位置の値は変化しますが、私のキャラクターはその位置の変化に反応しません。

エラーはありません。Character と BrickBlock はどちらもムービークリップであり、ActionScript 用にインポートされています。

他の情報が必要な場合はお知らせください。ありがとうございました!:)

私の次のコード:

package  {

import flash.events.Event
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;

public class CharMove extends MovieClip {

    var char1 :Character;
    var block :BrickBlock;

    public function CharMove() 
    {           
        char1 = new Character();
        block = new BrickBlock();

        //this.addEventListener(Event.ENTER_FRAME, collide)
        stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown);
    }

    /*function collide(e:Event):void
    {
            if(char.hitTestObject(block))
            {
                char.visible = !char.visible;
            }
    }*/

    function kDown(event:KeyboardEvent):void
    {
        switch (event.keyCode)
        {
            case Keyboard.LEFT:
                char1.x -= 5;
                trace(char1.x);
                break;

            case Keyboard.RIGHT:
                char1.x +=5;
                trace(char1.x);
                break;
        }
    }

}

}

4

1 に答える 1

0

静的なInputクラスを作成することを検討してください。

package input {
    import flash.display.Stage;
    import flash.events.KeyboardEvent;

    public class Input {

        private static var keys:Array = new Array(255);

        public static function setup(stage:Stage):void {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp);
        }

        private static function keyDown(e:KeyboardEvent):void {
            keys[e.keyCode] = true;
        }

        private static function keyUp(e:KeyboardEvent):void {
            keys[e.keyCode] = false;
        }

        public static function isKeyDown(k:int):Boolean {
            return keys[k];
        }

        public static const A:uint = 65;
        public static const B:uint = 66;
        public static const C:uint = 67;
        // The rest of the keys...
    }
}

これを使用するには、まずsetup()を呼び出します。これにより、 KEY_DOWNおよびKEY_UPイベントのリスナーが追加されます。キーを簡単にクエリし、それに応じて関連するアクションを実行できます。

Input.setup(stage);

/...

if(Input.isKeyDown(Input.A)) {
    char1.x -= 5;
}
于 2014-10-23T17:24:03.653 に答える