2015-09-23 11 views
15

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; variable update: Ausführung der Methode zu steuern (weil update: 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:

particle 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 ...

+0

Haben Sie einen Workaround zum Pausieren von SKEmitterNode gefunden? – WangYudong

+0

@WangYudong Nicht wirklich ... Haben Sie das gleiche Problem? – Whirlwind

+1

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

Antwort

1

die Szene zu pausieren:

currentScene.speed = 0 
currentScene.paused = true 

Um unpause die Szene

currentScene.speed = Variables.gameSpeed 
currentScene.paused = false 

funktioniert das für Sie ?

PS: An welcher iOS Version arbeiten Sie? Ich habe über Probleme mit iOS9.1, die in 9.3 korrigiert zu werden scheinen, über diese Emitter gelesen.

Verwandte Themen