Cocos2d iphone 当我的Cocos2d游戏从后台恢复时,动画动作会结巴

Cocos2d iphone 当我的Cocos2d游戏从后台恢复时,动画动作会结巴,cocos2d-iphone,ccaction,Cocos2d Iphone,Ccaction,在Cocos2d游戏中,我在菜单屏幕上旋转一个精灵,如下所示: CCAction* action = [CCRepeatForever actionWithAction: [CCRotateBy actionWithDuration:1.0 angle:90.0f]]; [sprite runAction:action]; 问题发生在我将游戏发送到后台,然后继续游戏时。如果发送到后台/恢复操作很快,则会出现轻微故障。游戏在背景中停留的时间越长,

在Cocos2d游戏中,我在菜单屏幕上旋转一个精灵,如下所示:

CCAction* action = [CCRepeatForever actionWithAction:
                         [CCRotateBy actionWithDuration:1.0 angle:90.0f]];
[sprite runAction:action];
问题发生在我将游戏发送到后台,然后继续游戏时。如果发送到后台/恢复操作很快,则会出现轻微故障。游戏在背景中停留的时间越长,当游戏恢复时,精灵“抽搐”的时间就越长,直到它再次开始正常旋转。我使用的是CoCoS2D2.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];
    }
}

我不确定这是否是正确的方法-一开始有点犹豫(可以理解),但随后动画开始平稳。轻微的迟疑比我以前看到的剧烈抖动要好-但我不知道这个解决方案是否可以改进。

如果您让我们同时看到applicationWillResignActive和ApplicationIDBecomeactive方法,那就太好了