Когда моя игра Cocos2d возобновляется с фона, анимационные действия заикаются

У меня есть спрайт, который я вращаю на экране меню в моей игре Cocos2d, например:

CCAction* action = [CCRepeatForever actionWithAction:
                         [CCRotateBy actionWithDuration:1.0 angle:90.0f]];
[sprite runAction:action];

Проблема возникает, когда я отправляю игру в фоновый режим, а затем возобновляю игру. Если операция отправки в фоновый режим / возобновления выполняется быстро, возникает небольшая ошибка. Чем дольше игра остается на заднем плане, тем дольше спрайт будет "дергаться", когда игра возобновится, прежде чем он снова начнет нормально вращаться. Я на Cocos2d 2.0, Xcode 4.5, работает на iOS 6.

Редактировать: Хорошая точка Gangcil! Вот что у меня было (я думаю, это было из шаблона Cocos2d:

// getting a call, pause the game
-(void) applicationWillResignActive:(UIApplication *)application
{
    if( [_navController visibleViewController] == _director )
        [_director pause];
}

// call got rejected
-(void) applicationDidBecomeActive:(UIApplication *)application
{
    if( [_navController visibleViewController] == _director )
        [_director resume];
}

Мне удалось устранить проблему, изменив эти функции на:

// getting a call, pause the game
-(void) applicationWillResignActive:(UIApplication *)application
{
    if( [_navController visibleViewController] == _director )
    {
        [_director stopAnimation];
        [_director pause];
    }
}

// call got rejected
-(void) applicationDidBecomeActive:(UIApplication *)application
{
    if( [_navController visibleViewController] == _director )
    {
        [_director stopAnimation];
        [_director resume];
        [_director startAnimation];
    }
}

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

0 ответов

Другие вопросы по тегам