Нажмите и удерживайте сенсорное событие 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");
}
}
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!");
}
Надеюсь, это поможет немного прояснить ситуацию!