ios - 转换为 sksprite 节点

标签 ios swift sprite-kit

我在这行代码上不断收到 SIGBRT 错误:

let spriteTapped : SKSpriteNode = (nodeTapped as? SKSpriteNode)!

我用它来检查我的 Sprite 是否被点击,以及哪个 Sprite 被点击,每当点击 SKSpriteNode 以外的任何东西时,我都会收到此错误,关于如何解决此问题有什么想法吗?

最佳答案

如果 nodeTapped 不是 SKSpriteNode,则条件转换 nodeTapped 为? SKSpriteNode 计算结果为 nil,并且使用 ! 强制展开会崩溃。 更好地使用可选绑定(bind):

if let spriteTapped = nodeTapped as? SKSpriteNode {
    // ... do something with spriteTapped ...
} else {
    // tapped node is not a SKSpriteNode
}

guard let spriteTapped = nodeTapped as? SKSpriteNode else {
    return // tapped node is not a SKSpriteNode
}
// ... do something with spriteTapped ...

如果您有一个节点数组,那么

for case let spriteTapped as SKSpriteNode in nodesTapped {
    // ... do something with spriteTapped ...
}

可用于迭代列表中的所有 Sprite 节点(以及 默默地忽略其他节点)。

关于ios - 转换为 sksprite 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51944521/

相关文章:

ios - 表格 View 中的空单元格

ios - 如何使用自定义类的 TableView 单元格的本地化?

ios - touchesBegan 局部变量

xcode - “重玩”按钮不起作用

iOS:为应用程序安装过程添加背景图像

ios - 读取文件内容不使用 FileManager

ios - 在 Swift 3 中处理 try 和 throws

ios - 应用程序终止时使用位置更新

ios - 安装 twilio iOS SDK 时出错

Swift - 在 Firebase 数据库中存储计步器的日期