我有一个变量var image = SKSpriteNode(imageNamed: "image")
,它是一个大纲。我想用彩色填充图像,但不知道必要的代码。有人能够提供解决方案吗?
答案 0 :(得分:1)
使用SKSpriteNode或图像无法执行此操作。您需要做的是使用UIBezierPath
或CGPath
创建大纲路径,然后创建一个用于填充路径区域的上下文。
然后你可以返回生成的图像并将其附加到精灵。
func fillInPath(path: CGPath, color: UIColor) -> UIImage?
{
let size = path.boundingBoxOfPath()
UIGraphicsBeginImageContext( size)
guard let context = UIGraphicsGetCurrentContext()
else
{
UIGraphicsEndImageContext()
return nil
}
context.addPath(path) // the path of your outline
context.clip()
context.setFillColor(color.cgColor)
context.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height))
let image = UIImage(cgImage:context.makeImage()!)
UIGraphicsEndImageContext()
return image
}
答案 1 :(得分:1)
这是另一种方法,为了方便起见,它包含在SpriteNode
扩展名中:
extension SKSpriteNode {
func fromFilledPath(path: CGPath, color: SKColor) -> SKSpriteNode {
let shape = SKShapeNode(path: path)
shape.fillColor = color
return SKSpriteNode(texture: SKView().texture(from:shape))
}
}
class GameScene: SKScene {
let myPathSprite = SKSpriteNode.fromFilledPath(~~~~)
}