【发布时间】:2016-02-19 00:45:03
【问题描述】:
我制作了一个游戏,我需要将触摸的 SKSpriteNode 转换为自定义类。它在 iOS 9.1 模拟器上运行良好,但在 iOS 8.4 模拟器中似乎根本无法投射。
在 iOS 9.1 中,我的类是 MyCustomClass 类型,但在 iOS 8.4 中,它是 SKSpriteNode。没有其他任何改变,只有模拟器操作系统。
我直接在SpriteKit GameScene中的Xcode中设置了自定义类(我点击节点并使用右侧选项卡在“自定义类”部分输入“MyCustomClass”)。我尝试在“Project.MyCustomClass”中添加项目名称,但这没有效果。
如果你有解决方案,我很想知道!
if self.nodeAtPoint(location).isKindOfClass(MyCustomClass) {
print("Is my class") //This is the result in iOS 9.1
}else if self.nodeAtPoint(location).isKindOfClass(SKSpriteNode){
print("Is an SKSPriteNode") //This is the result in iOS 8.4
}else if self.nodeAtPoint(location).isKindOfClass(SKNode) {
print("Is an SKNode")
}
if let touchedNode = self.nodeAtPoint(location) as? Objet {
//Fails on iOS 8.4 but succeed in iOS 9.1
}
感谢您的宝贵时间。
PS:我使用的是 Xcode 7.1.1。
【问题讨论】:
-
如果你确定 nodeAtPoint(location) 类型是 MyCustomClass,为什么你需要强制转换它?
-
我只知道在这个特定的测试中我明白了为什么在 iOS 8.4 上没有任何工作。
-
您的“特定”测试取决于 iOS 版本...,或者更好地说,您的部分代码取决于 iOS 版本。您示例中的 swift 语句不是
-
我更改了问题以反映我在您参加比赛后所做的测试。你是对的,问题不在于转换,而是当模拟器在 iOS 8.4 中运行时自定义类设置不正确。
-
if let self.nodeAtPoint(location) as? MyCustomClass在 8.4 上失败了吗?
标签: ios xcode sprite-kit xcode7 ios8.4