【发布时间】:2016-02-25 18:43:18
【问题描述】:
我有一个具有 SKCropNode() 子节点的 SKNode()。我可以运行各种动作来旋转和缩放我的 SKNode(),但是当我想使用任何类型的淡入淡出动作时,结果总是 alpha 1 或 alpha 0。无法淡入淡出。
通过将 SKCropNode() 替换为 SKShapeNode(),褪色操作可以正常工作。
谁能告诉我为什么?是否可以淡化被屏蔽的节点?
import SpriteKit
class GameScene: SKScene {
let player = SKNode()
let playerSize = CGFloat(50)
let playerCrop = SKCropNode()
let playerMask = SKSpriteNode(color: SKColor.blackColor(), size: CGSizeMake(CGFloat(100), CGFloat(100)))
let playerCircle = SKShapeNode(circleOfRadius: CGFloat(100))
let playerCenterMask = SKShapeNode(circleOfRadius: CGFloat(100))
let playerCenterCrop = SKCropNode()
override func didMoveToView(view: SKView) {
backgroundColor = SKColor.blackColor()
player.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
player.alpha = 0
addChild(player)
playerCenterMask.lineWidth = 20
playerCenterCrop.maskNode = playerCenterMask
playerMask.position.x = -playerSize
playerMask.position.y = playerSize
playerCircle.lineWidth = 0
playerCircle.fillColor = SKColor.redColor()
playerCrop.addChild(playerCircle)
playerCrop.maskNode = playerMask
playerCenterCrop.addChild(playerCrop)
player.addChild(playerCenterCrop)
// Animations
let playerScale = SKAction.scaleTo(2.0, duration: 5)
let playerFadeIn = SKAction.fadeInWithDuration(5)
let playerAnimation = SKAction.group([playerScale,playerFadeIn])
player.runAction(playerAnimation, completion: {})
}
}
【问题讨论】:
-
你能把你的代码贴出来让我试试
-
谢谢,我已经添加了一些示例代码:)
-
尝试将蒙版设置为清除颜色,而不是黑色,alpha 的值为 1,所以你说的是裁剪所有 alpha
-
感谢您的帮助。将遮罩设置为 clearcolor 只会导致不再遮罩。
-
那么你想要相反的东西,所有蒙面的都是白色的,没有蒙面的都是透明的
标签: swift sprite-kit swift2