Ho provato qualche soluzione alternativa, ma non riesco ancora a mettere in pausa le particelle esistenti su iOS9
. Sto usando seguente tecnica per mettere in pausa la scena:Impossibile mettere in pausa SKEmitterNode in iOS9
- pausa la scena con
self.paused = YES;
- impostare variabile personalizzata
globalPause = YES;
per controllareupdate:
metodo di esecuzione (in quantoupdate:
corre ancora, mentre scena è in pausa).
Il punto è che non metto in pausa la vista, ma piuttosto la scena. Non metto in pausa la vista, a causa di this.
Ecco il codice in grado di riprodurre questo problema in iOS9
:
#import "GameScene.h"
@interface GameScene()
@property (nonatomic, strong)SKEmitterNode *emitter;
@end
@implementation GameScene
-(void)didMoveToView:(SKView *)view {
[self addChild:[self getSpaceDustEmitter]];
}
//No need for this method though :)
-(SKEmitterNode*)getSpaceDustEmitter{
self.emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"spacedust" ofType:@"sks"]];
self.emitter .name = @"emitter_spacedust";
self.emitter .position = CGPointMake(CGRectGetMidX(self.frame),self.frame.size.height);
return self.emitter ;
}
@end
Quindi, esempio molto semplice che funziona su iOS8
e non funziona come previsto in iOS9
. Quello che succede è che anche se tutto sembra in pausa, non è così. Le particelle esistenti dopo la mossa non ripetuta al punto in cui dovrebbero essere se la scena non è stata messa in pausa. Inoltre, sembra che le particelle mantengono la deposizione delle uova troppo, che può produrre ritardo notevole quando La riattivazione Se la pausa è stata lunga ...
Ecco uno screenshot da editor di particelle:
Qualcuno ha qualche ragionevole spiegazione ? Finora ho cercato di mettere in pausa in modo esplicito l'emettitore:
emitterNode.paused = YES;
Non ha funzionato, e in realtà questo dovrebbe essere fatto automaticamente quando la scena è in pausa (emettitore viene aggiunto alla scena). Un'altra cosa che viene provata è impostare emitter.particleSpeed = 0;
e emitter.particleSpeedRange = 0;
e emitter.particleBirthRate = 0;
ma questo non ha effetto sulle particelle già esistenti (il che ha senso).
E questo è tutto. Non so se questo è un bug, ma sono a corto di idee ...
Avete trovato qualche soluzione per mettere in pausa SKEmitterNode? – WangYudong
@WangYudong Non proprio ... Stai riscontrando lo stesso problema? – Whirlwind
Sì. In iOS 8, tutto era OK. E ho provato quello che hai detto nel tuo post e ho ottenuto gli stessi risultati. – WangYudong