【问题标题】:How to change the alpha value of spriteNode?如何改变 spriteNode 的 alpha 值?
【发布时间】:2017-03-23 08:55:41
【问题描述】:

我正在像这样更改spriteNodealpha 值,

if (firstBody.node?.name)! == "Player" && secondBody.node?.name == "Alpha 1" {

        var item: SKSpriteNode?
        item = SKSpriteNode(imageNamed: "BG")
        item!.alpha = 0.1

        score += 1
        scoreLabel?.text = String(score)
}

这是它在文档中所说的(使用node.alpha = value),但我不确定它为什么不起作用。

【问题讨论】:

  • 您正在更改不在现场的实例节点!
  • 这是在didBegin(contact:) 即 sprite-Kit 碰撞检测中吗?你怎么知道 firstBody 是玩家,而 secondBody 是“Alpha1”?它们可能会颠倒过来。另外,您要淡化的这个新精灵item 是什么?它不在屏幕上,所以你不会看到它。

标签: swift sprite-kit skspritenode skscene


【解决方案1】:

您可以使用 Action 来淡化 alpha,我在下面留下了一个示例。

class GameScene: SKScene {  
  var player: SKSpriteNode!  

  override func didMove(to view: SKView) {
        player = SKSpriteNode(color: .purple, size: CGSize(width: 100, height: 100))      
        player.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
        self.addChild(player)            
    }

    func fadePlayer() {    
        let fadeAlpha = SKAction.fadeAlpha(to: 0.1, duration: 1.0)
        self.run(fadeAlpha)
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        fadePlayer()
    }

}

当触摸开始时,SpriteNode 将淡出到您插入的 alpha 值,它也会在您插入的持续时间内逐渐淡出,此操作会在 1 秒内逐渐淡出 SpriteNode 的 alpha 到 0.1。

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 2011-07-10
    • 2022-04-13
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多