Ich habe einige Problemumgehungen probiert, aber ich kann immer noch keine vorhandenen Partikel auf iOS9
anhalten. Ich verwende folgende Technik, um die Szene zu pausieren:SKEmitterNode kann in iOS9 nicht angehalten werden
- Pause die Szene mit
self.paused = YES;
- setzen individuelle
globalPause = YES;
variableupdate:
Ausführung der Methode zu steuern (weilupdate:
noch läuft, während Szene angehalten wird).
Der Punkt ist, dass ich nicht die Ansicht pausieren, sondern die Szene. Ich pausiere die Ansicht nicht wegen this.
Hier ist der Code, der dieses Problem auf iOS9
wiedergeben kann:
#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
So sehr einfaches Beispiel, das auf iOS9
wie erwartet auf iOS8
und funktioniert nicht funktioniert. Was passiert ist, dass selbst wenn alles aussieht, dass es pausiert ist, es nicht ist. Vorhandene Partikel nach dem Pausieren bewegen sich an den Punkt, an dem sie sein sollten, wenn die Szene nicht pausiert wurde. Auch sieht es so aus, dass Partikel halten zu Laichen, die merkliche Verzögerung erzeugen kann, wenn Die Fortsetzung, wenn Pause lang war ...
Hier ein Screenshot von Partikel Editor:
Jedes haben eine vernünftige Erklärung? Bisher habe ich versucht, explizit die Emitter Pause:
emitterNode.paused = YES;
Es hat nicht funktioniert, und eigentlich sollte dies automatisch geschehen, wenn Szene angehalten wird (Emitter mit der Szene hinzugefügt). Eine andere Sache, die versucht wird, ist emitter.particleSpeed = 0;
sowie emitter.particleSpeedRange = 0;
und emitter.particleBirthRate = 0;
setzen, aber dies betrifft nicht bereits vorhandene Partikel (die Sinn machen).
Und das ist es. Nicht sicher, ob dies ein Fehler ist, aber ich bin die Ideen ausgehen ...
Haben Sie einen Workaround zum Pausieren von SKEmitterNode gefunden? – WangYudong
@WangYudong Nicht wirklich ... Haben Sie das gleiche Problem? – Whirlwind
Ja. In iOS 8 war alles in Ordnung. Und ich habe versucht, was Sie in Ihrem Beitrag gesagt haben, und habe die gleichen Ergebnisse erzielt. – WangYudong