隐藏节点不显示 childnodewithname

hidden nodes don't show up with childnodewithname

我正在构建一个带有复选框功能的列表,其中复选符号是空复选框的子项。在 touchesBegan: 中,复选框应随着每次触摸复选框从隐藏变为未隐藏,然后返回。代码如下所示:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    if let touch = touches.first {
        location = touch.locationInNode(self)
        for node in self.nodesAtPoint(location) {
            if node.childNodeWithName("checkSymbol")?.hidden == true {
                node.childNodeWithName("checkSymbol")?.hidden = false
            } else if childNodeWithName("checkSymbol")?.hidden == false {
                node.childNodeWithName("checkSymbol")?.hidden = true
            }
        }
    }
}

问题是 childNode(checkSymbol 节点)在隐藏时未被 .nodesAtPoint() 方法拾取。这就是我尝试使用上面的 .childNodeWithName() 方法解决问题的原因,但该框仍处于选中状态以进行后续触摸。有人对如何解决这个问题有建议吗?

如果您希望 nodesAtPoint 拾取隐藏节点,您可以随时更改 hidden.

的实现

您也可以使用 node.zPosition = -1,假设您有一个背景节点 zPosition 0 隐藏在后面。