我创建了一个游戏SKSpriteNode
那是黑色的,当用户触摸屏幕时我想要SKSpriteNode
更改为白色。我已经用谷歌搜索了一切,并尝试了很多不同的策略,但没有成功。有谁知道如何做到这一点?
这是我的场景的代码:
var blackBird = SKSpriteNode()
override func didMoveToView(view: SKView) {
//Black Bird
var blackBirdTexture = SKTexture(imageNamed:"blackbird")
blackBirdTexture.filteringMode = SKTextureFilteringMode.Nearest
blackBird = SKSpriteNode(texture: blackBirdTexture)
blackBird.setScale(0.5)
blackBird.position = CGPoint(x: self.frame.size.width * 0.35, y:
self.frame.size.height * 0.6)
blackBird.physicsBody =
SKPhysicsBody(circleOfRadius:blackBird.size.height/2.0)
blackBird.physicsBody!.dynamic = true
blackBird.physicsBody!.allowsRotation = false
self.addChild(blackBird)
}
override func touchesBegan(touches: Set<NSObject, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
blackBird.color = .whiteColor()
blackBird.colorBlendFactor = 1.0
}
您可以使用color
属性于SKSpriteNode
, 例如:
sprite.color = .whiteColor()
请记住,如果您的SKSpriteNode
有一个纹理,你需要设置colorBlendFactor
到非零值以查看您的颜色。来自SKSpriteNode文档 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKSpriteNode_Ref/index.html#//apple_ref/occ/instp/SKSpriteNode/colorBlendFactor on colorBlendFactor
:
该值必须是 0.0 到 1.0 之间的数字(含 0.0 和 1.0)。默认
值 (0.0) 表示颜色属性被忽略并且
纹理的值应不加修改地使用。对于大于的值
0.0,纹理在绘制到场景之前与颜色混合。
如果你想动画颜色变化,你可以使用SKAction
:
let colorize = SKAction.colorizeWithColor(.whiteColor(), colorBlendFactor: 1, duration: 5)
sprite.runAction(colorize)
来自SKAction文档 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKAction_Ref/#//apple_ref/occ/clm/SKAction/colorizeWithColor:colorBlendFactor:duration: on colorizeWithColor:colorBlendFactor:duration:
此操作只能由 SKSpriteNode 对象执行。当。。。的时候
动作执行时,精灵的颜色和 colorBlendFactor 属性
对他们的新价值观充满活力。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)