【问题标题】:Trouble setting color of SKTileMapNodeSKTileMapNode 的颜色设置问题
【发布时间】:2018-11-30 16:50:45
【问题描述】:

我有一个自定义类,其中包含一个 SKTileMapNode(名为“gmap”)作为成员变量。我想使用 .color 属性根据用户交互重新着色节点。我使用以下代码更改颜色。 (根据需要使用不同的 UIColors)

self.gmap.color = UIColor(red: 0.4, green: 0.65, blue: 0.125, alpha: 1)
self.gmap.colorBlendFactor = 1.0

当我在自定义类的初始化程序中重新着色节点时,此方法工作正常,但在其他任何地方使用时不起作用。 (节点仍然正确显示,但它的颜色没有改变)知道这里出了什么问题吗? SKTileMapNode 在初始化后不能重新着色吗?谢谢你的帮助。

编辑:我没有找到答案,但我通过删除节点并添加新节点找到了解决方法。请参阅下面的答案以获取完整说明。

【问题讨论】:

    标签: ios swift sprite-kit sktilemapnode


    【解决方案1】:

    我从来没有找到一个好的答案,但我找到了解决方法。 查找并删除旧节点,在代码中重新创建一个全新的节点,重新着色该新节点并将该新节点添加到场景中。

    if let child = self.childNode(withName: "gmap") as? SKTileMapNode {
        //remove old node           
        child.removeFromParent()           
        var gmapTwo = SKTileMapNode()
    
    
        //insert code to re-intialize Node here
    
        //now you can recolor the node without a problem
        gmapTwo.color = UIColor(red: 0.55, green: 0.55, blue: 0.925, alpha: 1)
        gmapTwo.colorBlendFactor = 1
        //(Make sure the new Node has the same name so you can find it again later)
        gmapTwo.name = "gmap"
        //add node to scene
        self.addChild(gmapTwo)
    }
    

    (使用 .copy 函数制作节点的副本对我来说不起作用,相反我不得不在代码中手动复制节点)

    抱歉,我没有真正的答案,但到目前为止,这是唯一对我有用的解决方案。希望对SpriteKit有更好理解的人可以更好地解释发生了什么

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多