SCNAction更改节点颜色一次,然后再没有一次

时间:2019-02-28 20:54:46

标签: swift scenekit scnnode scnaction

仍然让我对Swift很有帮助,请保持温柔;-)

我已经设置了一个更改节点颜色的动作,我每隔几秒钟就会调用一次。第一次调用时,它就像一个饰物,但之后颜色保持不变。 我的代码:

let duration: TimeInterval = 3
var myRed = 255
var myGreen = 0
var myBlue = 0

var voltage: UInt32 = 0 {
    willSet(newV) { }
    didSet {

        myGreen = Int.random(in: 0...255)

        let act1 = SCNAction.customAction(duration: duration, action: { (node, elapsedTime) in
            let percentage = elapsedTime / CGFloat(self.duration)
                self.backgroundNode.geometry?.firstMaterial?.diffuse.contents = self.aniColor(from: self.oldColor, to: self.newColor, percentage: percentage)
            })

            if backgroundNode.action(forKey: "color") == nil {
                print("Running action")
                oldColor = newColor
                newColor =
                    UIColor(red: CGFloat(myRed), green: CGFloat(myGreen), blue: CGFloat(myBlue), alpha: 1.0)
                backgroundNode.runAction(act1, forKey: "color")
            }
        }
        print("new color: \(newColor)")
        print("old color: \(oldColor)")
    }
}

从aniColor函数打印RBG值表明这些值确实发生了变化,因此我为为什么它只能工作一次而感到困惑。 也欢迎使用其他方法使节点的颜色淡入另一种颜色。

感谢您的时间。

编辑: 显然,我不允许对自己的问题发表评论。叹。 但是答案在评论中,谢谢E.Coms。

0 个答案:

没有答案