2014-01-26 1 views
0

Я пытаюсь сделать пятнадцать, как игра на Короне. Я создаю плитки и назначаю каждому плиту eventListener, который обнаруживает обнаружение салфетки и салфетки, а затем выполняет вызов функции, которая перемещает плитку. Я столкнулся с проблемой, если я сделаю салфетку во время перемещения моей плитки, она изменит направление и поведение неприемлемо. Например, мне нужно переместить его на 90 пикселей вниз, но когда он переместится на 45 пикселей вниз. Если я провёл вправо, он переместит 45 пикселей вниз и 45 пикселей вправо. Как временно отключить eventListener, чтобы избежать такого поведения? Я задал еще вопрос относительно этого проекта и код here, поэтому я его не перепробовал. спасибо.Corona SDK, временно отключить eventListeners пока объект движется

ответ

3

Вы лучше иметь флаг, который определяет, если ваш ящик принимает событие в то время как флаг верно (некоторые из следующего псевдокода):

function swipeListener(event) 
    if moving then return end -- ignore swipe while moving 
    setup motion 
    moving = true 
end 

Вам нужен способ знать, когда движение имеет завершено, например, событие с указанием «анимации полный» или, возможно, обработчик события enterFrame, в котором вы проверить, если ваш ящик достиг distination, если да, то вы задали перемещение = ложь:

function swipeListener(event) 
    if moving then return end -- ignore swipe while moving 
    setup motion 
    Runtime:addEventListener(enterFrame, "enterFrame") 
    moving = true 
end 

function enterFrame(event) 
    if moving then 
     check if motion done 
     if yes then 
      moving = false 
      stop motion 
      Runtime:removeEventListener(enterFrame, "enterFrame") 
     end 
    end 
end 

вы могли бы иметь другой путь познания когда движение сделано, поэтому некоторые из вышеперечисленных могут не но вы получите эту идею.

+0

Спасибо, вместе с этим вопросом Я получил готовое решение http://stackoverflow.com/questions/20042107/corona-sdk-check-if-object-has-stopped-moving – Anatoly

Смежные вопросы