2016-07-23 6 views
1

Ich entwickle ein Spiel in Adobe Air, in dem ich einen Filmclip in der Mitte habe. Wenn der Benutzer diesen Movieclip berührt und sich auf der Bühne bewegt, muss der Movieclip sein "x" entsprechend der Position der Berührung ändern. Ich verwende den folgenden Code, der genau das tut, was es tun soll:
Verschieben eines Videoclips, während der Nutzer ihn berührt AS3

MC.addEventListener(TouchEvent.TOUCH_MOVE, touchDownMC); 
function touchDownMC(e:TouchEvent):void { 
    MC.x = e.stageX; 
} 

Der MC bewegt sich richtig, aber das Problem ist, nach 10-15 Sekunden, während der Benutzer die MC drückt und bewegt Wenn es nicht mehr reagiert, reagiert das MC für das aktuelle Berührungsereignis nicht mehr und der Benutzer muss es erneut berühren und sich wieder bewegen. Es scheint, als ob das TouchEvent verloren geht. Wie kann ich den MC ständig bewegen, solange ich meinen Finger darauf habe, ihn zuhören und bewegen lasse?

Antwort

3

Die Lösung gefunden! Der beste Weg, dies zu tun ist, diesen Code zu verwenden, die ich so AS3/AIR check if TouchPhase.ENDED is over object

gefunden auf

Dies ist, wie ich es in meinem Fall implementiert:

MC.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); 
function onTouchBegin(event:TouchEvent) { 
    if(touchMoveID != 0) { 
    //  myTextField.text = "already moving. ignoring new touch";  
    trace("It Did Not"); 
    return; 
    } 
    touchMoveID = event.touchPointID; 

// myTextField.text = "touch begin" + event.touchPointID; 
    stage.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
    stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
} 
function onTouchMove(event:TouchEvent) { 
    if(event.touchPointID != touchMoveID) { 
    // myTextField.text = "ignoring unrelated touch"; 
     return; 
    } 
    MC.x = event.stageX; 
    MC.y = event.stageY; 
// myTextField.text = "touch move" + event.touchPointID; 
} 
function onTouchEnd(event:TouchEvent) { 
    if(event.touchPointID != touchMoveID) { 
    //  myTextField.text = "ignoring unrelated touch end"; 
     return; 
    } 
    touchMoveID = 0; 
    stage.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
    stage.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
    // myTextField.text = "touch end" + event.touchPointID; 
} 
Verwandte Themen