旋转带有纹理的 SKShapeNode
Rotate a SKShapeNode with texture
我正在尝试旋转带有纹理的 SKShapeNode
,但它不起作用。基本上,我有一个带有纹理的圆圈,我试图使用与 SKSpriteNode
:
相同的方式使其旋转
let spin = SKAction.rotateByAngle(CGFloat(M_PI/4.0), duration: 1)
问题是圆圈在旋转,而不是纹理。我可以使用以下代码进行检查:
let wait = SKAction.waitForDuration(0.5)
let block = SKAction.runBlock({
print(self.circle.zRotation)
})
let sequence = SKAction.sequence([wait, block])
self.runAction(SKAction.repeatActionForever(sequence))
这是我创建 SKShapeNode
:
的代码
let tex:SKTexture = SKTexture(image: image)
let circle = SKShapeNode(circleOfRadius: 100 )
circle.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 + 200)
circle.strokeColor = SKColor.clearColor()
circle.glowWidth = 1.0
circle.fillColor = SKColor.whiteColor()
circle.fillTexture = tex
self.addChild(circle)
// Runing the action
circle.runAction(spin)
请帮忙。提前致谢!
PS:我知道使用 SKSpriteNode
会更好,但我的目标是将方形图像放在圆形框架中,我认为使用 SKShapeNode
会更好完美的。如果有人知道如何创建通告 SKSpriteNode
,请随时在答案部分 post! :)
这就是我想要实现的(具有旋转它的能力):
您可以通过使用 SKCropNode 并将其掩码 属性 设置为圆形纹理来实现您想要的效果:
override func didMoveToView(view: SKView) {
let maskShapeTexture = SKTexture(imageNamed: "circle")
let texture = SKTexture(imageNamed: "pictureToMask")
let pictureToMask = SKSpriteNode(texture: texture, size: texture.size())
let mask = SKSpriteNode(texture: maskShapeTexture) //make a circular mask
let cropNode = SKCropNode()
cropNode.maskNode = mask
cropNode.addChild(pictureToMask)
cropNode.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(cropNode)
}
假设要遮罩的图片大小为 300x300 像素。在这种情况下,您用作蒙版的圆圈必须具有相同的大小。意味着在图像编辑器中制作时,圆本身的半径必须为 150 像素(直径为 300 像素)。
遮罩节点决定了图片的可见区域。所以不要让它太大。遮罩节点必须是具有透明背景的完全不透明的圆圈。
我正在尝试旋转带有纹理的 SKShapeNode
,但它不起作用。基本上,我有一个带有纹理的圆圈,我试图使用与 SKSpriteNode
:
let spin = SKAction.rotateByAngle(CGFloat(M_PI/4.0), duration: 1)
问题是圆圈在旋转,而不是纹理。我可以使用以下代码进行检查:
let wait = SKAction.waitForDuration(0.5)
let block = SKAction.runBlock({
print(self.circle.zRotation)
})
let sequence = SKAction.sequence([wait, block])
self.runAction(SKAction.repeatActionForever(sequence))
这是我创建 SKShapeNode
:
let tex:SKTexture = SKTexture(image: image)
let circle = SKShapeNode(circleOfRadius: 100 )
circle.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 + 200)
circle.strokeColor = SKColor.clearColor()
circle.glowWidth = 1.0
circle.fillColor = SKColor.whiteColor()
circle.fillTexture = tex
self.addChild(circle)
// Runing the action
circle.runAction(spin)
请帮忙。提前致谢!
PS:我知道使用 SKSpriteNode
会更好,但我的目标是将方形图像放在圆形框架中,我认为使用 SKShapeNode
会更好完美的。如果有人知道如何创建通告 SKSpriteNode
,请随时在答案部分 post! :)
这就是我想要实现的(具有旋转它的能力):
您可以通过使用 SKCropNode 并将其掩码 属性 设置为圆形纹理来实现您想要的效果:
override func didMoveToView(view: SKView) {
let maskShapeTexture = SKTexture(imageNamed: "circle")
let texture = SKTexture(imageNamed: "pictureToMask")
let pictureToMask = SKSpriteNode(texture: texture, size: texture.size())
let mask = SKSpriteNode(texture: maskShapeTexture) //make a circular mask
let cropNode = SKCropNode()
cropNode.maskNode = mask
cropNode.addChild(pictureToMask)
cropNode.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(cropNode)
}
假设要遮罩的图片大小为 300x300 像素。在这种情况下,您用作蒙版的圆圈必须具有相同的大小。意味着在图像编辑器中制作时,圆本身的半径必须为 150 像素(直径为 300 像素)。
遮罩节点决定了图片的可见区域。所以不要让它太大。遮罩节点必须是具有透明背景的完全不透明的圆圈。