在用户不断触摸影片剪辑时移动影片剪辑 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;
}
我正在 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;
}