2012-11-01 15 views
5

Zostałem odwiedziło chwilę teraz dla jasnego przykładu, jak zakodować przycisk, który pozwala użytkownikowi nacisnąć i przytrzymaj. Chociaż tak się stanie, chciałbym wykonać jakiś kod.Starling AS3 touch naciśnij naciśnij i przytrzymaj

Zaimplementowałem TouchEvent.Touch i touchPhase.Began, ale wystrzeliwuje się tylko jeden raz.

Nie mogę znaleźć jasnego wyjaśnienia, jak to wdrożyć. Każda pomoc jest doceniana.

btnPress.addEventListener(TouchEvent.TOUCH, isPressed); 

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

Odpowiedz

10

Starling TouchEvent i TouchPhase może być trochę mylące na początku. TouchPhase.BEGAN uruchamia się tylko raz raz, gdy użytkownik zacznie dotykać ekranu. Jeśli chcesz wykonać kod , gdy palec znajduje się na przycisku, rozpocznij wykonywanie w fazie TouchPhase.BEGAN i zatrzymaj wykonywanie w fazie TouchPhase.ENDED (która uruchamia się tylko raz, gdy użytkownik przestaje dotykać ekranu).

Na przykład, w przypadku można zrobić coś takiego:

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

nadzieję, że pomaga wyjaśnić rzeczy trochę!

+0

Dziękuję. TouchPhase są nieco mylące na początek. – puks1978

+0

świetnie, dzięki! – ShoulO