gpt4 book ai didi

sprite-kit - colorizeWithColor 和 SKLabelNode

转载 作者:行者123 更新时间:2023-12-01 14:24:34 25 4
gpt4 key购买 nike

SKAction colorizeWithColor: 根据文档仅适用于 SKSpriteNode,那么我们如何处理 SKLabelNode? SKLabelNode 确实具有可以静态设置的colorcolorBlendFactor 属性。有什么方法可以用 SKAction 制作动画吗?

我目前的方法是使用 SKView 的实例方法 textureFromNode 将 SKLabelNode 渲染到纹理,但只是从那个 atm 中获取零纹理:-(

更新:你知道什么。我想我发现了纹理渲染的问题。在 SKScene 的 init 方法中不可能将纹理变红,因为此时 self.view 为 nil。所以我在 didMoveToView 中尝试了它,瞧,渲染了纹理。无论如何谢谢:-)

最佳答案

也许有人会觉得这很有用。

   func changeColorForLabelNode(labelNode: SKLabelNode, toColor: SKColor, withDuration: NSTimeInterval) {
labelNode.runAction(SKAction.customActionWithDuration(withDuration, actionBlock: {
node, elapsedTime in

let label = node as SKLabelNode

let toColorComponents = CGColorGetComponents(toColor.CGColor)
let fromColorComponents = CGColorGetComponents(label.fontColor.CGColor)

let finalRed = fromColorComponents[0] + (toColorComponents[0] - fromColorComponents[0])*CGFloat(elapsedTime / CGFloat(withDuration))
let finalGreen = fromColorComponents[1] + (toColorComponents[1] - fromColorComponents[1])*CGFloat(elapsedTime / CGFloat(withDuration))
let finalBlue = fromColorComponents[2] + (toColorComponents[2] - fromColorComponents[2])*CGFloat(elapsedTime / CGFloat(withDuration))
let finalAlpha = fromColorComponents[3] + (toColorComponents[3] - fromColorComponents[3])*CGFloat(elapsedTime / CGFloat(withDuration))

labelNode.fontColor = SKColor(red: finalRed, green: finalGreen, blue: finalBlue, alpha: finalAlpha)
}))
}

您甚至可以检查此演示中使用的函数的结果:https://www.youtube.com/watch?v=ZIz8Bn0-hUA&feature=youtu.be

我决定在这里写一个简短的不错的解决方案,但如果您需要更多详细信息,请检查这个问题:SKAction.colorizeWithColor makes SKLabelNode disappear

关于sprite-kit - colorizeWithColor 和 SKLabelNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com