SpriteKit 自动恢复和自动暂停 iOS8

2024-01-25

场景在 applicationWillResignActive 时自动暂停,并在 applicationDidBecomeActive 运行时自动取消暂停。我希望通过 nsnotification 在 applicationWillResignActive 上暂停场景,而不是在运行 applicationDidBecomeActive 时自动恢复。有任何想法吗?提前致谢。

应用程序代理

 - (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
[[NSNotificationCenter defaultCenter] postNotificationName:@"backgroundPause" object:nil];
}

游戏视图控制器

- (void)handleNotification:(NSNotification *)notification {

if ([notification.name isEqualToString:@"backgroundPause"]) {
    SKView *skView = (SKView *)self.view;
    skView.scene.paused = YES; //pauses scene

    [self.lblPaused removeFromSuperview];//removes any lingering pause menu items
    [self.lblPausedHelp removeFromSuperview];

    self.lblPaused = [[UILabel alloc] init];
    self.lblPaused.center = CGPointMake(self.view.frame.size.width/2 - 125, self.view.frame.size.height/2 - 40);
    self.lblPaused.text = @"PAUSED";
    [self.lblPaused setFont:[UIFont boldSystemFontOfSize:66]];
    [self.lblPaused sizeToFit];
    self.lblPaused.textColor = [UIColor blackColor];
    [self.view addSubview:self.lblPaused];//adds pause label

    self.lblPausedHelp = [[UILabel alloc] init];
    self.lblPausedHelp.center = CGPointMake(self.view.frame.size.width/2 - 145, self.view.frame.size.height/2 + 40);
    self.lblPausedHelp.text = @"tap anywhere to resume";
    [self.lblPausedHelp setFont:[UIFont boldSystemFontOfSize:26]];
    [self.lblPausedHelp sizeToFit];
    self.lblPausedHelp.textColor = [UIColor blackColor];
    [self.view addSubview:self.lblPausedHelp];//adds pause label
}

}


我很确定这是 spritekit 中的一个错误。无论您做什么,游戏都会自行取消暂停applicationDidBecomeActive

我在这里问了同样的问题。在应用程序启动/退出时暂停 spritekit 游戏.. iOS8 https://stackoverflow.com/questions/26317553/pausing-spritekit-game-on-app-launch-exit-ios8您必须子类化 SKScene 并覆盖paused财产让它发挥作用。很奇怪你必须这样做。它确实不应该有这么多问题,但这是我能让游戏保持暂停的唯一方法

编辑:好的,我将代码翻译为 Objective-C。我希望这对你有用,因为我的 Objective-C 比我预期的更生锈。

AppDelegate.m

- (void)applicationWillResignActive:(UIApplication *)application {
    [[NSNotificationCenter defaultCenter]postNotificationName:@"pauseGameScene" object:nil];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[NSNotificationCenter defaultCenter]postNotificationName:@"stayPausedNotification" object:nil];
}

SKView子类

@interface MySKView : SKView
- (void) setStayPaused;
@end

@implementation MySKView

bool _stayPaused = false;

- (void) setPaused:(BOOL)paused{
    if (!_stayPaused) {
        super.paused = paused;
    }
    _stayPaused = NO;

}


- (void) setStayPaused{
    _stayPaused = YES;
}

@end

游戏视图控制器

@interface GameViewController : UIViewController

-(void)pauseGame;

@end

@implementation GameViewController

SKScene *_scene;
MySKView *_skView;

-(void)pauseGame{
    _skView.paused = YES;
    _skView.scene.view.paused = YES;
}


- (void)viewDidLoad
{

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(pauseGame) name:@"pauseGameScene" object:nil];


    // Configure the view.

    _skView = [[MySKView alloc]initWithFrame:self.view.frame];

    _skView.showsFPS = YES;
    _skView.showsNodeCount = YES;
    /* Sprite Kit applies additional optimizations to improve rendering performance */
    _skView.ignoresSiblingOrder = YES;

    // Create and configure the scene.
    _scene = [[GameScene alloc]initWithSize:_skView.frame.size];
    _scene.scaleMode = SKSceneScaleModeAspectFill;

    // Present the scene.
    [self.view addSubview:_skView];
    [_skView presentScene:_scene];

}

- (void)viewDidAppear:(BOOL)animated{
    [[NSNotificationCenter defaultCenter]addObserver:_skView selector:@selector(setStayPaused) name:@"stayPausedNotification" object:nil];
}


@end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpriteKit 自动恢复和自动暂停 iOS8 的相关文章

  • 如何随机化 NSArray? [复制]

    这个问题在这里已经有答案了 假设我有一个 NSArray 里面有 50 100 个对象 如何将数组按随机顺序排列 有很多方法可以做到这一点 但大多数只涉及生成随机数 也许您可以使用 NSMutableArray 使用此技术 生成 0 到 4
  • C / Objective C 中的 switch 语句

    我是 Objective C 的新手 但根据我对 switch 语句的了解 以下代码不应该打印任何内容 因为对我来说 似乎应该存在编译错误 但是打印了 2 我不懂为什么 有人可以解释一下吗 void test int myVar 2 swi
  • iOS通过AVAssetWriter反转音频

    我正在尝试使用 AVAsset 和 AVAssetWriter 在 iOS 中反转音频 以下代码可以正常工作 但输出文件比输入文件短 例如 输入文件的持续时间为 1 59 但输出文件的持续时间为 1 50 且音频内容相同 void reve
  • 将圆角应用于使用 UIBezierPath 创建的圆弧

    我正在研究一个使用 UIBezierPath 创建的圆形进度条 进度条如下图所示 我的问题是 如何使圆弧的边缘变成圆形而不是矩形 我用来绘制圆弧的代码如下 Draw the arc with bezier path int radius 1
  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • 自动布局+基于总行数的动态表高度约束

    首先 这与动态单元格的高度无关 所以不要把它搞混了 我有一个场景 我创建了三张卡 详细信息卡 显示位置的具体详细信息 图表卡 根据选择显示不同的图表 更多详细信息卡 卡显示更多详细信息 以下是上述卡片的屏幕 查看以上屏幕的层次结构 Cont
  • 有没有办法以编程方式选择 Segue 锚点?

    假设我有一个 Storyboard 其中包含一个包含按钮的视图 当用户按下此按钮时 会出现一个弹出窗口 因此 我需要使用 Xcode 将 Segue 拖动到按钮来设置锚点 然后执行使用标识符执行Segue 所以 我的问题是 有没有办法以编程
  • 核心数据二进制数据允许外部存储崩溃

    我在 iOS 12 0 1 上发生崩溃 日志如下 ImageIO CFDataGetBytes data 0x28539b2f0 size 154262 offset 8 count 8 dst 0x16dbf86f0 External d
  • 运行时警告 CLSUserDefaults 实施了两次

    在 cocoapod 源中使用 import 语法时 我在 pod 定义的类中看到了与下面类似的警告 但这是一个内部苹果类定义 CLSUserDefaults 我无法控制它 也不会进行子类化 我不知道这是否真的造成了问题 但它不应该发生 o
  • 以编程方式进行排序时检索 ViewController 堆栈

    static func showMenuView parentVC UIViewController let storyboard UIStoryboard name Main bundle nil let resultController
  • NSLocale 货币符号,显示金额值之前或之后

    我在用StoreKit在我的应用程序中实现应用程序内购买商店 我有一个自定义设计 这意味着价格的值应该是白色的且较大的 货币符号较小 较暗并与价格值的顶部对齐 我可以使用以下命令毫无问题地获取货币符号NSLocale in SKproduc
  • 允许用户从 UILabel 选择文本进行复制[重复]

    这个问题在这里已经有答案了 我有一个 UILabel 但如何允许用户选择其文本的一部分 我不希望用户能够编辑文本 也不希望标签 文本字段具有边框 这是不可能的UILabel 你应该使用UITextView为了那个原因 只需使用禁用编辑即可t
  • 如何创建一个 NSMutableArray 并为其分配一个特定的对象?

    我刚刚开始接触 Obj C 并且希望创建一个 MKAnnotations 数组 我已经创建了名为的 MKAnnotation 类TruckLocation其中包含名称 描述 纬度和经度 这是到目前为止我所拥有的数组 NSMutableArr
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • iOS:弃用 AudioSessionInitialize 和 AudioSessionSetProperty

    我对 Objective C 很陌生 正在尝试更新一些大约 3 年前的代码以与 iOS 7 一起使用 有两两个实例AudioSessionSetProperty and AudioSessionInitialize出现在代码中 1 void
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str

随机推荐

  • 将数值向量中的 NA 替换为从邻居计算出的值

    我正在尝试写一个替换 函数将给定数值向量中的每个缺失值替换为算术平均值 of 它的前面和后面的元素 例如 如果c 5 NA 6 2 3 5 6 4 NA 2 NA 5 给出 那么结果应该是c 5 5 5 6 2 3 5 6 4 3 2 3
  • 如何在 printf 函数中使用宏

    所以我在我的头文件中定义了这个宏和其他一些宏 define COL1WIDTH 16 我想用它来打印这样的东西 word 25 Dir1 FileB 129 Sat Jan 1 00 00 02 2011 12 1 x4 2 x2 3 x2
  • ASP.NET 中的 jQuery ajax 带有 customErrors mode="On"

    知道如何检索服务器端在执行时抛出的原始异常使用 jQuery 调用 ajax 并使用 自定义错误模式 开 在 web config 中 如果 mode Off 我可以使用此函数获取错误 error function xhr status e
  • C++ 中的重定向

    include
  • TDD 如何应用于基于 Django 类的通用视图?

    由于 Django 中基于类的通用视图涉及框架的一些工作 我发现很难以 TDD 风格使用它们 现在 我使用 TestClient 从 http 模拟堆栈访问视图 但我更愿意在使用 TestClient 进行 功能 测试之前正确地对特定方法
  • 何时在 Linq 中使用 Cast() 和 OfType()

    我知道有两种将类型转换为IEnumerable从一个Arraylist在 Linq 中并想知道在什么情况下使用它们 e g IEnumerable
  • Cassandra/Spark 显示大表的条目计数不正确

    我正在尝试使用 Spark 处理大型 cassandra 表 约 4 02 亿条目和 84 列 但得到的结果不一致 最初的要求是将一些列从该表复制到另一个表 复制数据后 我注意到新表中的一些条目丢失了 为了验证我是否对大型源表进行了计数 但
  • 安卓框架。它是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 Android 框架有几个问题 有人可以回答吗 他们 Android 框架有什么作用 做 它的工作是什么 这些经理是什么 活动经
  • 在 Perl CGI 中分段 AJAX 响应?

    perl cgi 脚本是否可以将其 AJAX 响应分段为多个单独的 HTTP 响应 假设我有这段代码 xmlhttp new XMLHttpRequest xmlhttp onreadystatechange function if xml
  • 如何通过 StructureMap 映射使用 IRepository 约定

    StructureMap 中是否有一种方法可以用一行或约定进行这种重复映射 For
  • 为什么 Dapper 的 .Execute(...) 返回一个 int ?

    任何人都知道为什么 Dapper 返回一个 int Execute 我在任何地方都找不到这个记录 该整数表示受查询影响的行数 它返回一个整数 以便您知道查询是否有效 如果返回零并且您期望某些内容发生变化 那么您就知道存在问题
  • ReadTheDocs 和 autodoc 在构建期间无法找到我的包

    我一直在尝试在 readthedocs 上为我的第一个 python 包 QutiePy 构建文档 在本地构建文档工作正常 但是当我尝试在 readthedocs 上构建时 autodoc 无法填充我的部分并给出以下警告 WARNING a
  • 创建 Node.js Express 应用程序时出错。找不到

    我正在尝试在 WebStorm 中创建一个 node js 项目 你能告诉我我在这里缺少什么吗 得到了解决方案https intellij support jetbrains com hc en us community posts 115
  • C# 中的转义引号以供 JavaScript 使用

    我有一个 ASP Net Web 处理程序 它以 JSON 格式返回查询结果 public static String dt2JSON DataTable dt String s rows if dt Rows Count gt 0 for
  • matplotlib 的 plt.acorr 中自相关图的错误?

    我正在用 python 绘制自相关 我使用了三种方法来做到这一点 1 pandas 2 matplotlib 3 statsmodels 我发现我从 matplotlib 得到的图与其他两个不一致 代码是 from statsmodels
  • 记录到文件还是数据库更好?

    我们仍在使用旧的经典 ASP 并且希望在用户在我们的应用程序中执行某些操作时进行记录 我们将编写一个通用子例程来获取我们想要记录的详细信息 我们是否应该使用以下命令将其记录到 txt 文件中FileSystemObject或者将其记录到 M
  • 如何继承多模块 Maven 项目及其所有优点?

    我找不到一个好的 可扩展的解决方案的问题 我有一个项目可以提供给定工件的多种风格 这是一个多模块项目 目前有 3 个模块 flavor1 模块 flavor2 模块 flavor3 模块 问题是我还有另外 50 个项目需要以相同的方式设置
  • 停止闹钟 Android 应用程序

    谁能告诉我怎样才能停止这个警报 我试图通过使用处理程序来阻止它 但它并没有阻止它继续重复 这是我的代码 更新后 Button bStart bStop long mCurrentTime Calendar calendar TextView
  • 什么库/如何在 Windows32 上用 C 播放 wav 文件?

    在 Win32 系统上播放 wav 文件需要哪些 C 语言库 使用这些库的代码是什么 使用 Win32 API 播放声音 http msdn microsoft com en us library dd743680 v VS 85 aspx
  • SpriteKit 自动恢复和自动暂停 iOS8

    场景在 applicationWillResignActive 时自动暂停 并在 applicationDidBecomeActive 运行时自动取消暂停 我希望通过 nsnotification 在 applicationWillResi