2016-07-23 1 views
1

Я разрабатываю игру в adobe air, в которой у меня есть клип в центре. Когда пользователь касается этого фрагмента ролика и перемещается по сцене, видеоклипы должны изменить свой «x» соответственно на позицию касания. Я использую следующий код, который делает именно то, что он намеревался сделать:
Перемещение видеоклипа, когда пользователь продолжает прикасаться к нему AS3

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

МС правильно двигаться, но проблема в том, через 10-15 секунд, пока пользователь нажимает MC и перемещение это вокруг, MC просто перестает отвечать на текущее событие касания, и пользователю нужно снова коснуться его и вернуться назад. Похоже, что это теряет TouchEvent. Как я могу заставить MC постоянно двигаться до тех пор, пока я коснусь его пальцем, продолжаю слушать и двигаться?

ответ

3

Найдено Решение! Лучший способ сделать это, чтобы использовать этот код, который я нашел на 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; 
} 
Смежные вопросы