【问题标题】:iAd banner unpauses spritekit gameiAd 横幅取消暂停 spritekit 游戏
【发布时间】:2015-06-01 13:53:22
【问题描述】:

我正在使用带有 iAd 横幅的 sprite kit 开发一款 iOS 游戏,这个 iAd 导致游戏自行取消暂停,取消暂停是指 SKAction 仍在继续,以下是一些详细信息:

1) 我的游戏中有几个对象具有一系列(串联而不是并行)SKAction。

2) 单击我的游戏屏幕上的“暂停游戏”按钮并“恢复”工作正常 - 一切都按需要暂停。下面“注意”中的NSLog语句不显示。

3) 我编写了以下通知,其中有一个观察者调用选择器来暂停游戏(被正确调用)。下面“注意”中的NSLog语句不显示。

-(BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
    [[NSNotificationCenter defaultCenter] postNotificationName:@"iAdsoPauseGame" object:self];
    return YES;
}

4) iAd 出现啦啦啦……一切都按原样暂停。下面“注意”中的NSLog语句不显示。

5) 当我点击 iAd 中的“x”时,按此顺序发生以下情况: a) 当我通过 iAd 暂停游戏时,我在游戏中的对象正在运行的 SKAction 完成,并且列出了 NSLog 语句(在下面的注释中)。 b) 大约 0.5 秒后,我的 ViewController 的“viewDidAppear”被调用 c)在 5b 之后不到 1 毫秒,我的 iAd 的“bannerViewActionDidFinish”被调用(我在这里有一个通知告诉我的游戏暂停......问题是在我关闭 iAd 和调用这个方法之间有 0.5 秒的停机时间.. .)

注意:在我游戏的主 .m 文件中,在“更新”方法(每帧调用)中,我有一个 NSLog 语句(如下),当我点击 iAd 中的“x”时,它会立即显示,但随后停止(当调用 5b/5c 时)。

if (NodeGamePlay.paused==FALSE) {
    NSLog(@"NodeGamePlay.paused==FALSE");
}

所以我的问题是:当我退出 iAd 时,如何防止 SKaction 继续(在 5a 中发生的步骤)?感谢您的宝贵时间和帮助 - 这一直困扰着我很长一段时间!

【问题讨论】:

    标签: ios objective-c sprite-kit iad skaction


    【解决方案1】:

    试试这个

    - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
    {
         skView.scene.paused = YES;
         return true;
    }
    

    【讨论】:

    • 你能解释一下它的作用吗?
    • 我的问题不是在开始 iAd 时暂停场景。这完全可以正常工作(上面的 3 和 4)。我的问题是当我关闭 iAd(调用“-(void)bannerViewActionDidFinish:(ADBannerView *)banner”)时。当我关闭它时,SKScene 会在这个“横幅完成”方法实际被调用(告诉我的场景“保持暂停”之前)继续自身大约 1/2 秒。
    • 试试这个来取消暂停场景 - (void)bannerViewActionDidFinish:(ADBannerView *)banner { skView.scene.paused = NO; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    相关资源
    最近更新 更多