テクスチャ(必要に応じて色をブレンド)、画像、着色の四角形を描画するノードです。だから、これは自然です。 のiOS 9.xののでまたtexture
と呼ばれるスプライトを描画するために使用されるテクスチャを表す
あなたがSKSpriteNode
を作るとき、あなたはインスタンスプロパティを持っているが、我々はから画像を取得することができます次のコードに続くテクスチャ
let spriteBg = SKSpriteNode.init(texture: SKTexture.init(imageNamed: "myImage.png"))
if let txt = spriteBg.texture {
if #available(iOS 9.0, *) {
let image : UIImage = UIImage.init(cgImage:txt.cgImage())
} else {
// Fallback on earlier versions and forgot this code..
}
}
がthis興味深い答えの後、我々はより快適スウィフト3.0バージョンにそれを翻訳することができます:この例では、私は私のSKSpriteNode
spriteBg
として呼び出すので
func imageWith(source: UIImage, rotatedByHue: CGFloat) -> UIImage {
// Create a Core Image version of the image.
let sourceCore = CIImage(cgImage: source.cgImage!)
// Apply a CIHueAdjust filter
guard let hueAdjust = CIFilter(name: "CIHueAdjust") else { return source }
hueAdjust.setDefaults()
hueAdjust.setValue(sourceCore, forKey: "inputImage")
hueAdjust.setValue(CGFloat(rotatedByHue), forKey: "inputAngle")
let resultCore = hueAdjust.value(forKey: "outputImage") as! CIImage!
let context = CIContext(options: nil)
let resultRef = context.createCGImage(resultCore!, from: resultCore!.extent)
let result = UIImage(cgImage: resultRef!)
return result
}
、最終的には前のコードと私たちはすることができます:
if let txt = spriteBg.texture {
if #available(iOS 9.0, *) {
let image : UIImage = UIImage.init(cgImage:txt.cgImage())
let changedImage = imageWith(source: image, rotatedByHue: 0.5)
spriteBg.texture = SKTexture(image: changedImage)
} else {
// Fallback on earlier versions or bought a new iphone
}
}
私はこれを調べて、それを使用しての変形を試みました。しかし、私のコーディングはとても難しいので、私はどこにもいませんでした。実際には、後ろに行く。 – Confused
@Confused 1.あなたのコードは大嫌いではありません。あなたは面白くて良い質問をしました。 –