Starling AS3 сенсорное событие нажмите и удерживайте

Я некоторое время искал наглядный пример того, как закодировать кнопку, которая позволяет пользователю нажимать и удерживать. Пока это происходит, я хотел бы выполнить некоторый код.

Я реализовал 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");
    }
}

person puks1978    schedule 01.11.2012    source источник


Ответы (1)


Поначалу Старлинг TouchEvent и TouchPhase могут немного сбивать с толку. 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!");
}

Надеюсь, это поможет немного прояснить ситуацию!

person danii    schedule 01.11.2012
comment
Спасибо. TouchPhase немного сбивает с толку. - person puks1978; 02.11.2012