2014-10-15 12 views
9

. hepsi farklı Z-indeks değerlerine sahiptir. Düğme düğmesine basıldığında, düğmeye yeniden basıldığında, sahne duraklatılır ve yeniden başlatılır.2 düğüm dışındaki her şey nasıl bulanıklaştırılır. Spritekit (Swift) Ben (her iki SKSpriteNode en) bulanıklık olmamalıdır Oyunum</p> <pre><code>self.view?.scene?.paused = true </code></pre> <p>arka planını Ama düğmesi ve duraklatılmış etiketi bulanıklık istiyorum

Swift'de bunu başarmanın bir yolunu bulamıyorum. SKEffectNode'u kullanan bazı öneriler buldum?

cevap

10

temel adımlar ...

  1. bir SKEffectsNode
  2. Oluştur CIGaussianBlur CIFilter
  3. etkileri düğüme düğüm ekleme etkileri düğüme filtreyi atama oluşturun (çocuk düğümleri olacak

ve örnek kod Swift ...

// Create an effects node with a gaussian blur filter 
let effectsNode = SKEffectNode() 
let filter = CIFilter(name: "CIGaussianBlur") 
// Set the blur amount. Adjust this to achieve the desired effect 
let blurAmount = 10.0 
filter?.setValue(blurAmount, forKey: kCIInputRadiusKey) 

effectsNode.filter = filter 
effectsNode.position = self.view!.center 
effectsNode.blendMode = .alpha 

// Create a sprite 
let texture = SKTexture(imageNamed: "Spaceship") 
let sprite = SKSpriteNode(texture: texture) 

// Add the sprite to the effects node. Nodes added to the effects node 
// will be blurred 
effectsNode.addChild(sprite) 
// Add the effects node to the scene 
self.addChild(effectsNode) 

// Create another sprite 
let sprite2 = SKSpriteNode(texture: texture) 
sprite2.position = self.view!.center 
sprite2.size = CGSize(width:64, height:64); 
sprite2.zPosition = 100 

// Add the sprite to the scene. Nodes added to the scene won't be blurred 
self.addChild(sprite2) 
+0

Onları nasıl çözebilirim? "EffectsNode" u kaldırır mıyım yoksa tüm çocuklarını mı çıkarırdım? –

+0

Ayrıca, "filter.setValue (blurAmount, forKey: kCIInputRadiusKey)" satırı, "Uyumsuz tür 'id'" ** parametresine süzgeç gönderme ** diyerek hata veriyor. Eğer önemli olursa, bu kodu objektif-c'ye dönüştürdüm. –

+0

@ChristianKRider işte bu ifadenin bir obj-c versiyonu: '[filter setValue: [NSNumber numberWithFloat: 10.0] forKey: kCIInputRadiusKey];'. Spriteları açmak için, bunları efekt düğümünden kaldırabilir ve daha sonra sahneye ekleyebilir veya 'effectsNode.filter = nil;' – 0x141E