2013-10-24 21 views
5

başlar:Ben ilk Bunu yapabilirim yayıcı kurduğunuzda

self.cell = [CAEmitterCell emitterCell]; 
self.cell.yAcceleration = 20; 
... 
self.emitter.emitterCells = [NSArray arrayWithObjects:self.cell,nil]; 

Ama 5 saniye sonra patlar bir zamanlayıcı oluşturmak demek ve bunu:

- (void)timerFired 
{ 
    self.cell.yAcceleration = -10; 

} 

Zamanlayıcı tetiklenir, ancak CAEmitterCell'in hızlanması değişmez. Ya da en azından ekranda partikül emisyonunda hiçbir değişiklik olmaz. Bir CAEmitterCell'i kendi özelliklerinde yaptığım değişikliklere nasıl saygı gösterebilirim?

[self.emitter setValue:[NSNumber numberWithFloat:-10.0] 
       forKeyPath:@"emitterCells.cell.yAcceleration"]; 

"hücre" Burada verilen addır:

cevap

6

Bu burada bariz gerçek değil, ama çözüm yeni bir hücre ile self.emitter init zaman

[self.cell setName:@"cell"]; 
+0

Kafam karıştı. [Self.cell setName: @ "cell"] satırı nereye gider ve nereye başvurulur? [Self.cell setName: @ "NAME"] olması gerektiğini söylemek ister misiniz? ve sonra [self.emitter setValue: ... forKeyPath: @ "emitterCells.NAME.y Acceleration"]; Yazılan cevap kafamı karıştırıyor çünkü hücre anahtar yolunu değiştirip değiştirmediğinizi merak ettiğim genel bir terim mi? – Cindeselia

+0

@Cindeselia daha sonra sadece kendi hücresindeki hücre adının hücre olduğunu açıklığa kavuşturmak içindir. Adınızı "foo" olarak atamış olsaydınız, keyPath "emitterCells.foo.yAcceleration" olur. – Warpling

0

, Nesne korunacak, yani .. cell.yAcceleration bir zamanlayıcı ile değiştirdiğinizde, self.emitter hücresi değiştirilemez, self.cell.yAcceleration zaten değiştirildi. Yani, self.emitter anahtar yolunu kullanmalısınız.

İlgili konular