我在cocos2d(版本3.1.0)中遇到了一个非常奇怪的插页式广告问题。这是我用来加载两个插页式广告的代码。
- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
[interstitial presentFromRootViewController:[CCDirector sharedDirector]];
interstitial.delegate = nil;
interstitial = nil;
}
- (void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd {
[interstitialAd presentFromViewController:[CCDirector sharedDirector]];
}
一切看起来都很好并且工作正常,直到您在插入插页式广告之前将手指放在显示屏上,然后当您取消触摸(释放手指)并关闭弹出窗口时应用程序变得无法响应,触摸处理程序会执行操作根本不工作,你必须重新启动应用程序。我挣扎了几个小时没有成功找到问题。可能是 CCDirector 停止和启动动画方法吗?
答案 0 :(得分:1)
我找到了bug的解决方法。我所做的是在显示google / iAD插页式广告之前停用回复管理器,您可以看到以下方法。
- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
[[[CCDirector sharedDirector]responderManager]setEnabled:false];
[interstitial presentFromRootViewController:[CCDirector sharedDirector]];
interstitial.delegate = nil;
interstitial = nil;
}
- (void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd {
[[[CCDirector sharedDirector]responderManager]setEnabled:false];
[interstitialAd presentFromViewController:[CCDirector sharedDirector]];
}
之后我通过输入以下代码在 CCDirectorIOS.m 文件中的 - (void)startAnimation 中再次启用它。
if (![[self responderManager]isEnabled]) {
[[self responderManager]setEnabled:true];
}
我知道这不是一个优雅的解决方案,因为直接更改库代码并不总是一个好主意,但我找不到任何其他选择。我认为这是一个 cocos2d 错误,但我不确定,可能是更有经验的人可以指出确切的问题。我不知道最新的cocos2d版本中是否存在此错误。
编辑:此行为也出现在最新版本中。