2017-10-29 6 views
-2

私は変数var image = SKSpriteNode(imageNamed: "image")を持っていて、それはアウトラインです。私は色で画像を塗りたいが、必要なコードは分からない。誰かが解決策を提供できるだろうか?アセットを色で表示

+0

わかりません。 – Fluidity

答えて

1

はそれを行うための別の方法であり、便宜上SpriteNode延長に包まれて:なぜdownvotes

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(~~~~) 

} 
+0

'view.texture(from:crop:)' – Knight0fDragon

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    
} 
+0

これは簡単ではありません/より多くのperformant skypeとして、次にスプライトに変換するには? – Fluidity

+0

どちらがより効率的かわかりませんが、文脈によって遊ぶための選択肢が増えます – Knight0fDragon

関連する問題