SpriteKit childNodeWithName无法找到现有节点
问题描述:
我有这样的代码在SKScene:“存在”SpriteKit childNodeWithName无法找到现有节点
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
var touch: AnyObject = touches.anyObject()
var point = getPoint(touch.locationInNode(self))
var name = NSStringFromCGPoint(point)
for children in self.children {
if (children as SKSpriteNode).name == name {
println("exist!")
}
}
var tempNode = self.childNodeWithName(name)
}
我见在日志中,所以在儿童阵列中存在具有此名称的节点,但是tempNode是无。 self.childNodeWithName("//" + name)
电话也会返回无。
答
下面是如何在Swift中完成此操作...希望这有助于!
var mySprite: SKSpriteNode = childNodeWithName("mySprite") as SKSpriteNode
答
我发现使用雨燕2.2,也许是错误..你不能使用NSStringFromCGPoint和childNodeWithName不清洗从括号中的字符串这陌生感:
使用这个小方法:
func removeBraces(s:String)->String {
return s.stringByTrimmingCharactersInSet(NSCharacterSet.init(charactersInString: "{}"))
}
当你把你的SKSpriteNode比如做:
...
mySpriteNode.name = removeBraces(NSStringFromCGPoint(mySpriteNode.position))
...
并检索它为您的情况:
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
var touch: AnyObject = touches.anyObject()
var point = getPoint(touch.locationInNode(self))
var name = removeBraces(NSStringFromCGPoint(point))
if let child = self.childNodeWithName(name) {
print("I've found: \(child)")
}
...
}
childNodeWithName总是致命错误而失败:意外发现零而展开的可选值 – 2016-03-29 13:48:22
这可能是由于一些事情。名称字符串中可能存在拼写错误,或者您要查找的节点可能尚未初始化,或者在调用childNodeWithName时可能已被删除。可选的链接是防止这种情况的好方法。试试这个:'if let mySprite = childNodeWithName(“mySprite”){ //对节点 做些什么}' – 2016-03-30 02:39:22