【问题标题】:key_down delay action script 3key_down 延迟动作脚本 3
【发布时间】:2018-08-01 22:19:13
【问题描述】:

当你按住键第一次按下下一次按下后延迟但我不知道为什么。

           public function KeyboardControl(event:KeyboardEvent):void
    {
        keySpeed=5

        if(event.keyCode==Keyboard.RIGHT||event.keyCode==Keyboard.D)
        {
            if(_Vx<0)
            {
                _Vx=0;
            }
            _Vx += (keySpeed/mass);
        }
        if(event.keyCode==Keyboard.LEFT||event.keyCode==Keyboard.A)
        {
            if(_Vx>0)
            {
                _Vx=0;
            }
            _Vx -= (keySpeed/mass);
        }
             }

【问题讨论】:

    标签: actionscript-3 actionscript delay keyboard-events


    【解决方案1】:

    要获得更具响应性的行为,请将其结构如下:

    private var _Vx:Number = 0;
    private var keySpeed:Number = 5;
    private var mass:Number = 10;
    
    private var isKeyDown:Boolean;
    
    private function init():void
    {
      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
    }
    
    private function addedToStageHandler(event:Event):void
    {
      removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
    
      addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
      addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
      addEventListener(Event.ENTER_FRAME, update);
    }
    
    // Set the direction according to the key pressed
    private function keyDownHandler(event:KeyboardEvent):void
    {
      isKeyDown = true;
    
      if(event.keyCode == Keyboard.RIGHT || event.keyCode == Keyboard.D)
      {
        directionX = 1;
      }
      if(event.keyCode == Keyboard.LEFT || event.keyCode == Keyboard.A)
      {
        directionX = -1;
      }
    }
    
    private function keyUpHandler(event:KeyboardEvent):void
    {
      isKeyDown = false;
    }
    
    // Game loop
    private function update(event:Event):void
    {
      if(isKeyDown)
      {
        if(_Vx<0)
        {
          _Vx=0;
        }
        _Vx += (keySpeed/mass) * directionX;
      }
    }
    

    【讨论】:

    • Im sorry but my games 结构类似,但我只是复制了麻烦的功能。顺便感谢您的评论
    • 好的,设置的帧率是多少?
    • 24 但这不是真正的问题我刚刚意识到,当您按住任何键时,Windows 也会出现同样的问题,它会稍等片刻,然后继续写入。试试吧。但我不知道该怎么办
    • 我知道你说的按键被按下后的初始延迟是什么意思。这就是为什么我建议使用每帧运行的 update() 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多