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