繁体   English   中英

SpriteKit childNodeWithName找不到现有节点

[英]SpriteKit childNodeWithName can't find existing node

我在SKScene中有以下代码:

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)
}

我看到“存在!” 在日志中,因此在children数组中有一个具有此名称的节点,但是tempNodenil self.childNodeWithName("//" + name)调用也返回nil

这是在Swift中完成此操作的方法...希望对您有所帮助!

var mySprite: SKSpriteNode = childNodeWithName("mySprite") as SKSpriteNode

我使用Swift 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)")
    }
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM