ios - 使用 xcode/swift 如何将黑色图像的 SKSpriteNode 的颜色更改为白色?

标签 ios xcode swift sprite-kit skspritenode

我创建了一个带有黑色图像的 SKSpriteNode 的游戏,当用户触摸屏幕时,我希望 SKSpriteNode 更改为白色。

我尝试过使用这个:

sprite.color = .whiteColor()
sprite.colorBlendFactor = 1

它什么也没做。我也尝试过类似的方法:

let colorize = SKAction.colorizeWithColor(.whiteColor(), colorBlendFactor: 1, duration: 5)
sprite.runAction(colorize)

但这只会使 Sprite 褪色为白色,然后又变回黑色。

当用户触摸屏幕时,如何使黑色 Sprite 图像变白并保持白色?

最佳答案

更改具有黑色纹理的 Sprite 的 color 属性不会产生任何效果。此外,无论 Sprite 的原始颜色如何,将 Sprite 的 color 属性设置为 .whiteColor() 都不会产生任何效果。也就是说,至少有一种方法可以将 Sprite 的颜色从黑色转换为白色。

首先,从带有白色图像的 Sprite 开始(您可以在图像编辑应用程序中将黑色图像的颜色更改为白色):

let sprite = SKSpriteNode(imageNamed: "whitebird")

接下来,将 Sprite 的 color 属性设置为黑色,并将 colorBlendFactor 设置为 1

sprite.color = .blackColor()
sprite.colorBlendFactor = 1.0

最后,在 touchesBegan 中,通过将 colorBlendFactor 从 1 更改为 0,将 Sprite 从黑色重新着色为白色:

let recolor = SKAction.colorizeWithColorBlendFactor(0, duration: 2)
sprite.runAction(recolor)

关于ios - 使用 xcode/swift 如何将黑色图像的 SKSpriteNode 的颜色更改为白色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495503/

相关文章:

ios - UIView动画,如何让它流畅?

ios - 单击 UITableView 单元格内的图像

ios - iOS7 deleteSections:withRowAnimation:删除最后一节时的动画错误

ios - 如何在 UIAlertController 外部点击时关闭 UIAlertController?

ios - TableView 单元格中的堆栈 View

swift - 当更改为使用可选链接替换强制解包时有什么区别?

ios - 如何在连接到另一个 viewController 的标签中显示数组计数

iphone - 在 iOS 上,如何检测我调用的号码是否占线?

ios - self.view setNeedsDisplay 和 self.view setNeedsLayout 不起作用

ios - '无法在包 : 'NSBundle | Error while switching to Xcode 4 and creating an iPad version of an app 中加载 NIB