我正在尝试在cocos2D中播放.gif动画。为此,我使用库glgif。现在,要显示动画我暂停导演,添加子视图以显示动画,动画完成后我恢复导演。 但是,我无法恢复Director的状态,它显示为空白。 所以我尝试了这个没有暂停和恢复这个导演,它仍然没有工作。我也尝试在动画之前分离导演并在之后添加它,甚至那不起作用。
那么有没有办法在应用程序中暂停/暂停Director并正确恢复?
感谢。
代码示例:
[[Director sharedDirector] pause];
[[Director sharedDirector] detach];
AppDelegate *del = [[UIApplication sharedApplication] delegate];
[del.window addSubview:del.viewController.view];
[del.window makeKeyAndVisible]; // this is code to call glgif class and start anim.
//code to resume the director
AppDelegate *del = [[UIApplication sharedApplication] delegate];
[[Director sharedDirector] resume];
[[Director sharedDirector] attachInView:del.window];
MScene *m = [MScene node];
[[Director sharedDirector] replaceScene:m];
答案 0 :(得分:2)
如果是简单的叠加层,只需暂停并直接进行UIKit通话即可。像这样:
- (void)playerChanged
{
[[CCDirector sharedDirector] pause];
UIAlertView *alert = [[[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"CHANGEPLAYER", nil)
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"OK", nil),
nil
] autorelease];
[alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
(void)alertView;
(void)buttonIndex;
[[CCDirector sharedDirector] resume];
}
如果你真的接管了整个窗口,那么完全处理它
[[CCDirector sharedDirector] end];
并重做你的初始化并在你回去时调用runWithScene。分离/附加舞蹈似乎不能很好地或一致地工作。
答案 1 :(得分:0)
可能有些错误是由于附加/分离,显示/隐藏视图。我和我的团队只在attachInView
上调用applicationDidFinishLoading
一次,如果我们想在Cocos顶部更改其他视图,我们会在委托窗口实例上使用sendToBack
或bringToFront
调用。可能值得一试。如果有意义,请告诉我,如果不是,我可以在一些示例代码中添加。
答案 2 :(得分:0)
不完全确定它是否可以在这里提供帮助,但值得一提的是:CCDirector暂停方法不会完全停止动画,只会减慢它的速度。 StopAnimation方法完全阻止它。所以也许stopAnimation / startAnimation而不是暂停/恢复可以解决这个问题。