在用户不断触摸影片剪辑时移动影片剪辑 AS3

Moving a movie clip while user keeps touching it AS3

我正在 adobe air 中开发一款游戏,其中中间有一个影片剪辑。当用户触摸此影片剪辑并在舞台上移动时,影片剪辑需要根据触摸的位置相应地更改其 "x"。我正在使用下面的代码,它正在做它打算做的事情:

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

MC 移动正确,但问题是,在用户按下 MC 并四处移动 10-15 秒后,MC 停止响应当前触摸事件,用户需要重新- 触摸它并向后移动。它似乎失去了 TouchEvent。怎样才能让MC只要手指在上面就不停地动,一直听着动着呢?

找到解决方案!最好的方法是使用我在 SO AS3/AIR check if TouchPhase.ENDED is over object

上找到的这段代码

这就是我在我的案例中的实现方式:

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; 
}