Starling AS3触摸事件按住

puk*_*978 5 actionscript-3 starling-framework

我现在已经搜索了一段时间,以获得如何编写允许用户按住的按钮的明确示例.虽然这种情况发生,但我想执行一些代码.

我已经实现了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");
    }
}
Run Code Online (Sandbox Code Playgroud)

dan*_*nii 10

八哥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!");
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于澄清一些事情!