0

私はActionscript3を初めて使用し、キーボードの下矢印を使用して円を下に移動できるようにしたいと考えています。これが私のコードです:

package  {

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

public class Circle extends MovieClip {

    public function Circle() {
        // constructor code
        var speed:int = 3;

        addEventListener(KeyboardEvent.KEY_DOWN,keyIsDown);

        function keyIsDown(event:KeyboardEvent) {
            if(event.keyCode == Keyboard.DOWN) {
                y = y+=speed;
            }
        }
    }

}

}

テストすると、下キーを押しても何も起こりません。誰かがコードの何が問題になっているのか知っていますか?

4

1 に答える 1

2

クラスではなくステージにKeyBoardイベントを追加してみてください。さらに、私はそのような関数をネストしません。一般的には悪い習慣です。また、線y = y+=speed;は紛らわしいです、それはただそうであるべきではありませんy += speed;か?

編集:申し訳ありませんが、コンストラクターではステージがnullになると思います。ADDEDイベントリスナーを追加しました。

これを試して:

package  {

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

    public class Circle extends MovieClip {

        public function Circle() {
            // constructor code
            var speed:int = 3;

            addEventListener(Event.ADDED, onAdded);        
        }

        private function onAdded(event:Event) {
            stage.addEventListener(KeyboardEvent.KEY_DOWN,keyIsDown);
        }

        private function keyIsDown(event:KeyboardEvent) {
            if(event.keyCode == Keyboard.DOWN) {
                 y += speed;
            }
        }

    }
}
于 2012-06-29T17:21:47.000 に答える