我正在使用SKNode方法在SKScene中搜索childNodeWithName:。要设置名称,我将使用NSManagedObjectID的URI字符串表示形式,获得如下所示:
[[managedObjectID URIRepresentation] absoluteString];
这给出节点名为:
x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p4
但是,childNodeWithName:方法返回零。当在调试器中检查时,该节点和另外两个节点明显存在:
<__NSArrayI 0x9933eb0>(
<SKSpriteNode> name:'(null)' texture:['nil'] position:{160, 284} size:{320, 568} rotation:0.00,
<SKSpriteNode> name:'x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p4' texture:['nil'] position:{31, 537} size:{50, 50} rotation:0.00,
<SKSpriteNode> name:'x-coredata://0856426F-EA66-4D28-A88A-FF49225F69B6/Object/p1' texture:['nil'] position:{217, 416} size:{50, 50} rotation:0.00
)为了加强这一点,如果我将节点名设置为"testingName",那么节点将按预期返回。
这让我相信雪碧套件不喜欢我用过的名字。是否有人知道命名限制,或者是否知道为什么URL格式会在这里出现问题?
谢谢。
发布于 2014-04-05 00:59:19
回答这里 @kylefuller。
来自苹果:
搜索使用常见的正则表达式语义。 "//“--当放置在搜索字符串的开头时,这将指定搜索应该从根节点开始,并在整个节点树中递归执行。它在搜索字符串中的其他地方都是不合法的。
发布于 2014-07-29 10:33:31
我想我应该在这个问题上补充一些东西,因为我在这个问题上浪费了几个小时。
我的项目有一个Sprite工具包场景图如下:
SKScene-> SKNode(myWorld)->SKNode(camera)就像苹果的例子一样。然而,当使用
var cameraNode = self.childNodeWithName("camera")要返回的节点始终为零。苹果的文档没有提到安迪的回答声明的“//”。函数childNodeWithName似乎只搜索指定节点的子节点(在本例中为场景)。我一找到这篇文章,我就把它改为
var cameraNode = self.childNodeWithName("//camera")它现在可以找到camera节点,而不管它在显微镜中的级别如何。
https://stackoverflow.com/questions/22874625
复制相似问题