2014-10-25 3 views
0

Я новичок в программировании на iOS, и я сделал небольшую игру.performSelectorinBackground в определенное время

У меня есть некоторые спрайты на фоне моей сцены, которые я хочу медленно перемещать слева направо. Прямо сейчас я делаю это в MainScene:

[self performSelectorInBackground:@selector(doBackgroundAnimation:) withObject:sprite]; 

и метод, в котором анимация занимает место выглядит следующим образом:

-(void)doBackgroundAnimation:(CCNode *)sprite { 
while (//sprite is still in the scene) { 
//move sprite a little bit right 
     } 
} 

Это решение не совсем то, что я искал, поскольку время, затрачиваемое на выполнение цикла while, варьируется от устройства к устройству.

Есть ли способ убедиться, что анимация занимает точное время, например. 5 секунд? Что-то вроде:

performSelectorInBackground:@selector(doBackgroundAnimation:) withObject:turtle inTime:5.0 

Спасибо за вашу помощь!

+0

Для анимации используйте рамки анимации. – gnasher729

ответ

0

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

Есть методы в комплекте спрайтов, которые касаются этого. На YouTube есть много обучающих программ, которые охватывают это.

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