2012-11-01 12 views
5

Sono stato alla ricerca di un po 'di tempo per un chiaro esempio di come codificare un pulsante che consente all'utente di premere e tenere premuto. Mentre ciò accade vorrei eseguire del codice.Starling evento tocco AS3 premere e tenere premuto

Ho implementato TouchEvent.Touch e touchPhase.Began ma si attiva solo una volta.

Non riesco a trovare una spiegazione chiara su come implementarlo. Qualsiasi aiuto è apprezzato.

btnPress.addEventListener(TouchEvent.TOUCH, isPressed); 

private function isPressed(event:TouchEvent){ 
    var touch:touch = event.getTouch(btnPress, TouchPhase.BEGAN); 
    if(touch) 
    { 
     trace("pressed"); 
    } 
} 

risposta

10

Starling TouchEvent e TouchPhase può essere un po 'di confusione in un primo momento. Il TouchPhase.BEGAN spara solo una volta, quando l'utente inizia a toccare lo schermo. Se si desidera eseguire qualche codice mentre il dito è sul pulsante, avviare l'esecuzione sulla fase TouchPhase.BEGAN e interrompere l'esecuzione sulla fase TouchPhase.ENDED (che si attiva anche una sola volta, quando l'utente interrompe il contatto dello schermo).

Ad esempio, nel tuo caso si potrebbe fare qualcosa di simile:

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

Spero che questo aiuti chiarire le cose un po '!

+0

Grazie. TouchPhase sono un po 'di confusione per iniziare. – puks1978

+0

fantastico, grazie! – ShoulO