【问题标题】:Sprite Kit enumerating nodes to remove failsSprite Kit 枚举要删除的节点失败
【发布时间】:2015-05-04 22:00:06
【问题描述】:

我正在尝试使用它们的名称枚举节点,检查它们的 y 位置,如果该值小于某个数字,则在它们上运行某些函数。我列举的节点是其他节点的一部分,称为块节点。我这样设置我的游戏是因为在整个块父节点上而不是在每个块上应用动作更方便。这是我的枚举代码:

func chechForPassing(){
    var passedBlocks: [SKSpriteNode] = []
    enumerateChildNodesWithName("1") { node, _ in
        let node = node as! SKSpriteNode
        if (node.position.y <= self.frame.size.height*0.3) {
            passedBlocks.append(node)
            println("1")
        }
        for node in passedBlocks {
            self.fadeEnRemove(node)
        }

    }

其中 fadeEnRemove 只是我编写的一个函数。打印用于调试目的。这就是我设置我的块的方式:

    func block(x: CGFloat, y: CGFloat) {

    var block = SKSpriteNode(imageNamed: "obsticle")
    kratkowski.size = CGSizeMake(block.frame.size.width*scaleFactor, block.frame.size.height*scaleFactor)
    block.position = CGPointMake(x, y)
    block.name = "1"
    blocksNode!.addChild(block)

}

而区块节点是SKNode。有人知道如何解决这个小问题吗?

谢谢!

【问题讨论】:

  • 这里没有足够的信息来调试。 “fadeEnRemove”是做什么的?另外,我不明白为什么要在枚举中嵌套一个带有passedBlocks 的循环。好像应该在外面
  • 问题不在于淡入淡出功能,因为我没有在控制台中打印。我使用这个列表是因为在同一个更新下有可能不止一个区块属于这个类别。
  • fade 函数只是一个以 sprite 作为参数并运行删除操作的函数 (SKAction.removeFromParent)

标签: swift sprite-kit


【解决方案1】:

如果我的操作正确,则永远不会调用枚举块。这可能是因为子节点名称不是“1”,或者您没有在正确的节点上调用 enumerateChildNodesWithName。

现在你在 self 上调用 enumerateChildNodesWithName。这些节点是添加到自身还是添加到另一个节点?如果它们在另一个节点上,则改为在该节点上调用 enumerateChildNodesWithName。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多