5

我一直在寻找一个清晰的例子来说明如何编写一个允许用户按住的按钮。发生这种情况时,我想执行一些代码。

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

1 回答 1

10

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!");
}

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

于 2012-11-01T16:27:24.223 回答