我已经搜索了一段时间,以寻找一个清晰的示例,该示例演示如何对允许用户按下并按住的按钮进行编码。发生这种情况时,我想执行一些代码。
我已经实现了TouchEvent.Touch和touchPhase.Began,但是它只触发一次。
我找不到有关如何实现此目的的明确解释。任何帮助表示赞赏。
btnPress.addEventListener(TouchEvent.TOUCH, isPressed);
private function isPressed(event:TouchEvent){
var touch:touch = event.getTouch(btnPress, TouchPhase.BEGAN);
if(touch)
{
trace("pressed");
}
}
最佳答案
起初给TouchEvent
和TouchPhase
加上Starling可能会有些混乱。当用户开始触摸屏幕时,TouchPhase.BEGAN
仅触发一次。如果要在手指按下按钮时执行一些代码,请在TouchPhase.BEGAN
阶段开始执行,并在TouchPhase.ENDED
阶段停止执行(当用户停止触摸屏幕时,也仅触发一次)。
例如,在您的情况下,您可以执行以下操作:
btnPress.addEventListener(TouchEvent.TOUCH, isPressed);
private function isPressed(event:TouchEvent):void
{
var touch:Touch = event.getTouch(btnPress);
if(touch.phase == TouchPhase.BEGAN)//on finger down
{
trace("pressed just now");
//do your stuff
addEventListener(Event.ENTER_FRAME, onButtonHold);
}
if(touch.phase == TouchPhase.ENDED) //on finger up
{
trace("release");
//stop doing stuff
removeEventListener(Event.ENTER_FRAME, onButtonHold);
}
}
private function onButtonHold(e:Event):void
{
trace("doing stuff while button pressed!");
}
希望这有助于澄清一些事情!