Actionscript 3 将流体触摸事件指定给电影剪辑AS3

Actionscript 3 将流体触摸事件指定给电影剪辑AS3,actionscript-3,touch-event,Actionscript 3,Touch Event,嘿,伙计们,我有一个简短的问题。我有一个回应用户触摸的电影剪辑。它是一艘直线上下移动的船。现在触摸事件运行良好,我通过在舞台上创建两个单独的电影剪辑来设置它们,作为控制飞船的按钮。因此,当用户触摸顶部按钮时,飞船向上移动,底部按钮也是如此。顺便说一句,这款游戏是为安卓手机设计的。所以我的问题是,我如何才能做到不需要任何电影剪辑按钮来控制飞船?当用户上下移动手指时,我无法确定触摸事件的响应位置。而不是把我的手指从手机上拿下来,然后把它放在一个单独的按钮上。我在很多其他游戏中都看到过这种情况,如果你

嘿,伙计们,我有一个简短的问题。我有一个回应用户触摸的电影剪辑。它是一艘直线上下移动的船。现在触摸事件运行良好,我通过在舞台上创建两个单独的电影剪辑来设置它们,作为控制飞船的按钮。因此,当用户触摸顶部按钮时,飞船向上移动,底部按钮也是如此。顺便说一句,这款游戏是为安卓手机设计的。所以我的问题是,我如何才能做到不需要任何电影剪辑按钮来控制飞船?当用户上下移动手指时,我无法确定触摸事件的响应位置。而不是把我的手指从手机上拿下来,然后把它放在一个单独的按钮上。我在很多其他游戏中都看到过这种情况,如果你在手指还在手机上时向上或向下移动它,它会做出反应并朝着正确的方向移动。这就是我现在在构造函数中设置按钮和触摸事件的方式:

//setup Listeners when btn's are rolled over and out
        btnUp.addEventListener(TouchEvent.TOUCH_OVER, btnUpMouseOver, false, 0, true); 
        btnUp.addEventListener(TouchEvent.TOUCH_OUT, btnUpMouseOver, false, 0, true);
        btnDown.addEventListener(TouchEvent.TOUCH_OVER, btnDownMouseOver, false, 0, true); 
        btnDown.addEventListener(TouchEvent.TOUCH_OUT, btnDownMouseOver, false, 0, true);
        shootPlayer.addEventListener(TouchEvent.TOUCH_TAP, shootPlayerObject, false, 0, true);
然后我有以下功能:

private function btnDownMouseOver(e:TouchEvent):void 
    {
        //trace("btnDownRollover");
        if (e.type == TouchEvent.TOUCH_OVER)
          {
              //Mouse was pressed on this button
             btnPressedDown = true;

          }
          else
          {
              //Mouse was released
              btnPressedDown = false;
          }
    }

    private function btnUpMouseOver(e:TouchEvent):void 
    {
        //trace("btnUpRollOver");
          if (e.type == TouchEvent.TOUCH_OVER)
          {
              //Mouse was pressed on this button
              btnPressedUp = true;



          }
          else
          {
              //Mouse was released
              btnPressedUp = false;
          }
    }

这就是现在控制这艘船的原因。正如我上面所说,它工作得很好。只是想看看他们是否有办法摆脱按钮,只要让它在手指改变方向时以向上或向下的位置做出反应。任何帮助都将不胜感激,谢谢

不要在对象上添加mouseUp/TouchOut侦听器,而是在mouseDown/TouchOver处理程序内的舞台上侦听它们。像这样:

private function btnDownMouseOver(e:TouchEvent):void 
{
    //you may need to do something with e.touchPointID if using multi-touch

    //Mouse was pressed on this button
    btnPressedDown = true;
    stage.addEventListener(TouchEvent.TOUCH_OUT, btnOut); //now that the mouse is down, lets listen for the up event globally

}

private function btnOut(e:TouchEvent):void
      {
          //Mouse was released
          btnPressedDown = false;
          stage.removeEventListener(TouchEvent.TOUCH_OUT,btnOut); //now the up event has fired, let's stop listening for it globally.
      }
}
使用触摸(如果支持多点触摸),您还需要跟踪
TouchEvent
touchPointID
,否则即使您只松开一根手指,您的触控也会触发所有触摸点