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
,否则即使您只松开一根手指,您的触控也会触发所有触摸点