2012-11-01 22 views
5

Kullanıcının basılı tutmasını sağlayan bir düğmenin nasıl kodlanacağı hakkında açık bir örnek için bir süredir arama yaptım. Bu olsa bazı kod yürütmek istiyorum.Starling AS3 dokunma olayına basın ve basılı tutun

TouchEvent.Touch ve touchPhase.Began'ı uyguladım ancak yalnızca bir kez tetikleniyor.

Bunun nasıl uygulanacağına dair net bir açıklama bulamıyorum. Herhangi bir yardım takdir edilir.

btnPress.addEventListener(TouchEvent.TOUCH, isPressed); 

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

cevap

10

Starling TouchEvent ve TouchPhase ilk başta küçük bir kafa karıştırıcı olabilir. TouchPhase.BEGAN, kullanıcı yalnızca ekrana dokunmaya başladığında, 'u başlatır. Parmak düğmesinde kodunu yürütmek istiyorsanız, TouchPhase.BEGAN fazında çalıştırmaya başlayın ve TouchPhase.ENDED fazında çalışmayı durdurun (kullanıcının ekrana dokunması durduğunda yalnızca bir kez patlar). şeyleri biraz daha net anlaşılmasına yardımcı bu

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

Hope:

Örneğin, sizin durumunuzda gibi bir şey yapabilirdi!

+0

Teşekkür ederiz. TouchPhase'ler ile başlamak biraz kafa karıştırıcı. – puks1978

+0

harika, teşekkürler! – ShoulO