【问题标题】:Sequentially-specific combination of keys held for function?为功能而持有的按键的顺序特定组合?
【发布时间】:2012-06-26 11:58:06
【问题描述】:

我试图在平台游戏中为我的角色提供一种移动机制,在该机制中,按住左键然后再按住右键将导致角色仍然向左移动但速度较慢(即 motionSpeed/2),就像月亮一样- 步行(反之亦然):

    public var leftKey:Boolean = false;
    public var rightKey:Boolean = false;
    public var upKey:Boolean = false;
    public var leftFlag:Boolean = false;
    function ifKeyDown(event:KeyboardEvent):void
    {
        if (event.keyCode == Keyboard.LEFT && rightKey == false)
        {
            leftKey = true;
            if (event.keyCode == Keyboard.LEFT && event.keyCode == Keyboard.RIGHT)
            {
                leftFlag = true;
                trace("leftFlag true");
            }
        }
        if (event.keyCode == Keyboard.RIGHT && leftKey == false)
        {
            rightKey = true;
        }
    }

    function ifKeyUp(event:KeyboardEvent):void
    {
        if (event.keyCode == Keyboard.LEFT)
        {
            leftKey = false;
            leftFlag = false;
        }
        if (event.keyCode == Keyboard.RIGHT)
        {
            rightKey = false;
        }
    }

    public function ifEnterFrame(event:Event):void
    {
        if (leftKey == true && leftFlag == false)
        {
            player1_mc.x -=  mainSpeed;
            trace("L");
        }

        if (rightKey == true && leftFlag == false)
        {
            player1_mc.x +=  mainSpeed;
            trace("R");
        }
        if (leftKey == true && rightKey == true)
        {
            if (leftFlag == true)
            {
                player1_mc.x -=  mainSpeed/2;
                trace("L + R");
            }
            else
            {
                player1_mc.x +=  mainSpeed/2;
                trace("R + L");
            }
        }

我的输出如下所示: 我按住左键 大号 大号 大号 大号 我松开左键。然后, 我按住右键 R R R R 我松开了右键。然后, 我按住右然后也按住左 大号 R 右+左 大号 R 右+左 我都放开了。然后, 我先左再右 大号 R 右+左 大号 R 右+左

虽然我通过我的跟踪知道 leftFlag 没有运行,但我花了几个小时试图找出为什么无济于事。 :(

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    我认为你的问题是这个表达式:

    event.keyCode == Keyboard.LEFT && event.keyCode == Keyboard.RIGHT
    

    虽然我不熟悉actionscript,但如果它是Java 之类的,每次按键都会调用一次键盘事件。 "event" 只对应一个键,而不是两个不同的键,因此您的表达式将始终返回 false。

    您的问题的解决方案可能会在按键按下和释放功能中都涉及到这样的事情。

    if (event.keyCode == Keyboard.LEFT)
    {
        if (leftFlag)
        {
            //code here
        }
        if (rightFlag)
        {
            //code here
        }
    }
    if (event.keyCode == Keyboard.RIGHT)
    {
        if (leftFlag)
        {
            //code here
        }
        if (rightFlag)
        {
            //code here
        }
    }
    

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2021-10-16
      相关资源
      最近更新 更多