Шахматы - iOS - SpriteKit - Ход человека не отображается, пока не закончится компьютерное мышление

Я разрабатываю приложение IOS Chess, используя SpriteKit в Swift2. Во время игры против компьютерного игрока ход человека не отображается до тех пор, пока не закончится компьютерное мышление. После завершения компьютерного мышления оба движения (человека и компьютера) отображаются вместе.

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

Сначала у меня был вызов логики компьютерного мышления внутри функции touchesBegan. Это не сработало, как ожидалось. Затем я переместил вызов в функцию touchesEnded. Проблема осталась. Теперь я поместил вызов в функцию update. Проблема все еще остается.

Я не смог найти ответ на этот вопрос. Есть ли способ решить эту проблему?

Спасибо, ArtBajji


person ArtBajji    schedule 08.04.2016    source источник
comment
SpriteKit предоставляет два санкционированных способа действий, связанных со временем. SKAction и update: метод с переданным параметром currentTime. Также вы можете легко реализовать обработчики завершения в Swift. Со всем этим вы можете легко запустить перемещение компьютера после того, как анимация перемещения игрока завершена. Найдите SO о том, как использовать последовательность SKaction и обработчики завершения.   -  person Whirlwind    schedule 08.04.2016
comment
Спасибо. Как вы предложили, используя SKAction, пользовательские реализации очереди и обработчик завершения действия, я решил это требование в своем приложении.   -  person ArtBajji    schedule 22.04.2016


Ответы (1)


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

let delay = 0     //time in seconds
dispatch_after(delay, dispatch_get_main_queue()) { 
    //computer starts thinking 
}
person BenJammin    schedule 08.04.2016
comment
Спасибо за ответ. К сожалению, все наоборот. Компьютерное мышление занимает более 30 секунд. Таким образом, пока компьютерное мышление не закончится, человеческий ход, сыгранный до компьютерного мышления, не будет отображаться на экране. Требование состоит в том, чтобы отобразить движение человека, а затем запустить компьютерное мышление. - person ArtBajji; 08.04.2016