Starling AS3 Touch事件出版社



我现在已经搜索了一段时间,以了解如何编码允许用户按下和按住的按钮。虽然发生这种情况,但我想执行一些代码。

我已经实现了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");
    }
}

starling TouchEventTouchPhase首先可能有些混乱。当用户开始触摸屏幕时,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!");
}

希望这有助于澄清一下!

最新更新