0

キーを押してライブラリからmoveiclipを再生しようとしていて、それをリンクしていますが、まだ機能しません(これは、イベントリスナーとハンドラーが配置されているコードのほんの一部であり、キャラクターは正常に動きます)

stage.addEventListener(Event.ENTER_FRAME, Move);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);

var aP:Boolean = false;
var dP:Boolean = false;
//creating a new Character_right instance
var character_right:Character_right = new Character_right(); 

function Move(vet:KeyboardEvent)
{
    if(aP)
    {
        char.x -= 5;
        char.scaleX = -0.55;
    }
    if(dP)
    {
        char.x += 5;
        char.scaleX = -0.55;
    }
}

function keyPress(evt:KeyboardEvent)
{
    switch(evt.keyCode)
    {
        case Keyboard.A:
        {
        aP = true;
        break;
        }
        case Keyboard.D:
        {
        dP = true;
        character_right.play(); 
        break;
        }
     }
}

function keyUp(evt:KeyboardEvent)
{
        switch(evt.keyCode)
    {
        case Keyboard.A:
        {
        aP = false;
        break;
        }
        case Keyboard.D:
        {
        dP = false;
        break;
        }
     }
}
4

2 に答える 2

0

あなたのコードでは、Character_right.play()後に関数を実行していてbreak、ブレークは残りのループ コードの実行を停止するため、Character_right.play()breakに実行します。次に例を示します。

function keyPress(evt:KeyboardEvent)
{
    switch(evt.keyCode)
    {
        case Keyboard.A:
        {
        aP = true;

        break;
        }
        case Keyboard.D:
        {
        dP = true;
        Character_right.play();
        break;
        }
     }
}
于 2013-12-18T19:34:24.243 に答える
0

この投稿を確認してください。キーボード イベントに関する素晴らしいチュートリアルが用意されています。概念を理解し、ロジックに実装することが重要になると思います。

簡単に言うと、次の例のようなものですが、スコープに必要なすべてのロジックを実装することを忘れないでください。

        var isRight:Boolean;
        var isLeft:Boolean;
        var isUp:Boolean;
        var isDown:Boolean;
        //creating a new Character_right instance
        var character_right:Character_right = new Character_right(); 

        stage.addEventListener(KeyboardEvent.KEY_DOWN, downKeyHandler, false, 0, true);
        function downKeyHandler(event:KeyboardEvent):void
        {
            if (event.keyCode == Keyboard.RIGHT )
            {
                isRight = true;
            }
            if (event.keyCode == Keyboard.LEFT)
            {
                isLeft = true;
            }
            if (event.keyCode == Keyboard.UP)
            {
                isUp = true;
            }
            if (event.keyCode == Keyboard.DOWN)
            {
                isDown = true;
            }
        }

        stage.addEventListener(KeyboardEvent.KEY_UP, upKeyHandler, false, 0, true);
        function upKeyHandler(event:KeyboardEvent):void
        {
            if (event.keyCode == Keyboard.RIGHT)
            {
                isRight = false;
            }
            if (event.keyCode == Keyboard.LEFT)
            {
                isLeft = false;
            }
            if (event.keyCode == Keyboard.UP)
            {
                isUp = false;
            }
            if (event.keyCode == Keyboard.DOWN)
            {
                isDown = false;
            }
        }

        stage.addEventListener(Event.ENTER_FRAME, loopHandler, false, 0, true);
        function loopHandler(event:Event):void
        {
            if (isRight)
            {
                //do something here…
                                    character_right.play();
                            }
            if (isLeft)
            {
                //do something here...
            }
            if (isUp)
            {
                //do something here...
            }
            if (isDown)
            {
                //do something here...
            }
        }
于 2013-12-18T10:06:37.310 に答える