2012-11-01 32 views
5

Tôi đã được tìm kiếm trong một thời bây giờ cho một ví dụ rõ ràng về cách mã một nút cho phép người dùng bấm và giữ. Trong khi điều này xảy ra, tôi muốn thực thi một số mã.Starling AS3 touch tổ chức sự kiện bấm và giữ

Tôi đã triển khai TouchEvent.Touch và touchPhase.Began nhưng nó chỉ kích hoạt một lần.

Tôi không thể tìm thấy giải thích rõ ràng về cách triển khai điều này. Bất kỳ trợ giúp được đánh giá cao.

btnPress.addEventListener(TouchEvent.TOUCH, isPressed); 

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

Trả lời

10

Starling TouchEventTouchPhase có thể hơi khó hiểu lúc đầu. TouchPhase.BEGAN chỉ kích hoạt sau khi, khi người dùng bắt đầu chạm vào màn hình. Nếu bạn muốn thực thi một số mã trong khi ngón tay đang ở trên nút, hãy bắt đầu thực hiện trên pha TouchPhase.BEGAN và ngừng thực thi trên pha TouchPhase.ENDED (cũng chỉ cháy một lần khi người dùng ngừng chạm vào màn hình).

Ví dụ, trong trường hợp của bạn, bạn có thể làm điều gì đó như:

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

Hy vọng điều này sẽ giúp làm rõ những điều một chút!

+0

Cảm ơn bạn. TouchPhase là một chút khó hiểu để bắt đầu. – puks1978

+0

tuyệt vời, cảm ơn! – ShoulO

Các vấn đề liên quan