首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置SKTileMapNode的颜色时出错

设置SKTileMapNode的颜色时出错
EN

Stack Overflow用户
提问于 2018-12-01 00:50:45
回答 1查看 56关注 0票数 0

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

代码语言:javascript
复制
self.gmap.color = UIColor(red: 0.4, green: 0.65, blue: 0.125, alpha: 1)
self.gmap.colorBlendFactor = 1.0

当我在自定义类的初始化器中对节点重新着色时,这个方法工作得很好,但在其他地方使用时就不起作用了。(节点仍然正确显示,但颜色不变)您知道这里出了什么问题吗?SKTileMapNode在初始化后不能重新着色吗?谢谢你的帮助。

编辑:我没有找到答案,但我找到了一个解决方法,删除了节点并添加了一个新节点。请看我下面的答案以获得完整的解释。

EN

回答 1

Stack Overflow用户

发布于 2018-12-02 02:09:06

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

代码语言:javascript
复制
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有更好理解的人能更好地解释发生了什么

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53561719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档