Actionscript 3 ActionScript 3使用多个onKeyDown/onKeyUP

Actionscript 3 ActionScript 3使用多个onKeyDown/onKeyUP,actionscript-3,Actionscript 3,我正在尝试运行两层版本的Snake,但是我在运行第二条蛇时遇到了问题,玩家1使用w、a、s和d,而玩家2使用箭头键。带w、a、s和d的玩家1正在工作,带箭头的玩家2没有 代码如下所示: function onKeyDown(event:KeyboardEvent):void{ if(event.keyCode == Keyboard.A){ SnakeDirection = "left"; }else if (event.keyCod

我正在尝试运行两层版本的Snake,但是我在运行第二条蛇时遇到了问题,玩家1使用w、a、s和d,而玩家2使用箭头键。带w、a、s和d的玩家1正在工作,带箭头的玩家2没有

代码如下所示:

    function onKeyDown(event:KeyboardEvent):void{
        if(event.keyCode == Keyboard.A){
           SnakeDirection = "left";
        }else if (event.keyCode == Keyboard.D) {
           SnakeDirection = "right";
        }else if (event.keyCode == Keyboard.W) {
            SnakeDirection = "up";
        }else if (event.keyCode == Keyboard.S) {
            SnakeDirection = "down";
        }
    }
    function onKeyUp(event:KeyboardEvent):void {
        if(event.keyCode == Keyboard.A) {
            SnakeDirection = "";
        }else if(event.keyCode == Keyboard.D) {
            SnakeDirection = "";
        }else if(event.keyCode == Keyboard.W ) {
            SnakeDirection = "";
        }else if(event.keyCode == Keyboard.S){
            SnakeDirection = "";
        }
    }
/*      function onKeyDown(event:KeyboardEvent):void{
            if(event.keyCode == Keyboard.LEFT){
               Snake2Direction = "left";
            }else if (event.keyCode == Keyboard.RIGHT) {
               Snake2Direction = "right";
            }else if (event.keyCode == Keyboard.UP) {
                Snake2Direction = "up";
            }else if (event.keyCode == Keyboard.DOWN) {
                Snake2Direction = "down";
            }
        }
        function onKeyUp(event:KeyboardEvent):void {
            if(event.keyCode == Keyboard.LEFT) {
                Snake2Direction = "";
            }else if(event.keyCode == Keyboard.RIGHT) {
                Snake2Direction = "";
            }else if(event.keyCode == Keyboard.UP ) {
                Snake2Direction = "";
            }else if(event.keyCode == Keyboard.DOWN){
                Snake2Direction = "";
            }
        }*/
有评论是因为它破坏了游戏,据我所知,错误是因为我只能使用一个onkeypup/Down。如果是这样,还有别的办法吗


谢谢

为什么要为每个事件使用两个函数?如果你只是在处理第一个播放器逻辑的同一个函数中处理第二个播放器的逻辑,不是会简单得多吗

像这样:

function onKeyDown(event : KeyboardEvent) : void {
        //handle player 1
        if (event.keyCode == Keyboard.A) {
            SnakeDirection = "left";
        } else if (event.keyCode == Keyboard.D) {
            SnakeDirection = "right";
        } else if (event.keyCode == Keyboard.W) {
            SnakeDirection = "up";
        } else if (event.keyCode == Keyboard.S) {
            SnakeDirection = "down";
        }
        //handle player 2
        if (event.keyCode == Keyboard.LEFT) {
            Snake2Direction = "left";
        } else if (event.keyCode == Keyboard.RIGHT) {
            Snake2Direction = "right";
        } else if (event.keyCode == Keyboard.UP) {
            Snake2Direction = "up";
        } else if (event.keyCode == Keyboard.DOWN) {
            Snake2Direction = "down";
        }
    }

    function onKeyUp(event : KeyboardEvent) : void {
        //handle player 1
        if (event.keyCode == Keyboard.A || event.keyCode == Keyboard.D || event.keyCode == Keyboard.W || event.keyCode == Keyboard.S) {
            SnakeDirection = "";
        }
        //handle player 2
        if (event.keyCode == Keyboard.LEFT ||event.keyCode == Keyboard.RIGHT || event.keyCode == Keyboard.UP || event.keyCode == Keyboard.DOWN) {
            Snake2Direction = "";
        }
    }
请记住,您希望将播放器的if块分开,以便可以同时获得多个输入


另请注意,
onKeyUp
函数中的else if块是不必要的。无论如何,它们都做相同的事情。

我从来没有想过要使用相同的功能,谢谢!明天早上我会试试的!