2012-11-01 3 views
5

Я искал какое-то время для четкого примера того, как закодировать кнопку, которая позволяет пользователю нажимать и удерживать. Хотя это происходит, я хотел бы выполнить некоторый код.Starling AS3 touch event нажмите и удерживайте

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

ответ

10

Старлинг 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!"); 
} 

Надеется, что это помогает прояснить вещи немного!

+0

Спасибо. TouchPhase немного запутывают для начала. – puks1978

+0

отлично, спасибо! – ShoulO

Смежные вопросы