1

我有一个精灵,我在 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];
    }
}

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

4

0 回答 0