2016-03-30 12 views
1

Ich habe zufällige Videos in meiner App spielen. Sie sind vom mp4 Format. Mit dem unten stehenden Code wähle ich eine Zufallszahl, die entscheidet, welches Video abgespielt werden soll. Es scheint eine Menge Zeit zu spielen, aber zu anderen Zeiten spielt nur der Ton ohne Video. Ich habe z-Wert-Probleme getestet und es tut dies immer noch, auch wenn es keinen Hintergrund oder irgendetwas gibt. Jede Hilfe würde sehr geschätzt werden, ich habe versucht, in vielen iOS-Versionen einschließlich 9.2 zu kompilieren, Probleme bestehen immer noch. Das nicht abspielende Video und nur Ton ist zufällig und keine Muster zu ihnen (manchmal geschieht schnell andere Zeiten 40 Spiele oder mehr), Ton ist in das Video eingebettet.Spritekit - SKSpriteNode Video spielt manchmal und nicht andere mit AVPlayer

-(SKVideoNode*)prepareHiVideo:(SKVideoNode*)videoNode withFileURL: 
(NSURL*)fileURL 
{ 
//AVPlayer 
AVPlayer * avPlayer = [AVPlayer playerWithURL:fileURL]; 
[[NSNotificationCenter defaultCenter]addObserver:self 
selector:@selector(hiFinishedPlaying:) 
name:AVPlayerItemDidPlayToEndTimeNotification object:[avPlayer 
currentItem]]; 


//SKVideo Node 
videoNode = [SKVideoNode videoNodeWithAVPlayer:avPlayer]; 
videoNode.zPosition=4; 
[videoNode setScale:.338]; 
return videoNode; 
} 
-(void)animatedHis { 
SKVideoNode * node; 
name.text = @""; 
NSURL *fileURL; 
AVPlayer * hiPlayer = [[AVPlayer alloc]init]; 
randomNumber = arc4random_uniform(9); 
while (randomNumber==previousRandom) 
{ 
randomNumber = arc4random_uniform(9); 
} 
if(randomNumber==0) 
{ 

fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"GrizzlyBearHi" ofType:@"mp4"]]; 
node=[self prepareHiVideo:node withFileURL:fileURL]; 
[email protected]"Grizzly Bear Hi"; 
node.position=CGPointMake(self.frame.size.width/5.6, self.frame.size.height/1.17); 
name=[SKLabelNode labelNodeWithFontNamed:@"Helvetica-Bold"]; 
name.zPosition=10; 
name.fontColor = [UIColor whiteColor]; 
[email protected]"Grizzly Bear"; 
name.position=CGPointMake(self.frame.size.width/5.6, self.frame.size.height/1.35); 


} 

First of the 9 random numbers code above, I have all 9 numbers and 
ifs in code. 

After ifs: 
node.zPosition=10; 
name.fontSize = 18; 
[self addChild:name]; 
[self addChild:node]; 
[node play]; 
previousRandom=randomNumber; 


Cleanup code after video completes: 
-(void)hiFinishedPlaying:(NSNotification *)notification 
{ 
SKNode * node; 


node = [self childNodeWithName:@"Grizzly Bear Hi" ]; 
if(node) 
[node removeFromParent]; 

node = [self childNodeWithName:@"Beaver Hi" ]; 
if(node) 
[node removeFromParent]; 

node = [self childNodeWithName:@"Goat Hi" ]; 
if(node) 
[node3 removeFromParent]; 


node = [self childNodeWithName:@"Mountain Lion Hi" ]; 
if(node) 
[node removeFromParent]; 

node = [self childNodeWithName:@"Bald Eagle Hi" ]; 
if(node) 
[node removeFromParent]; 

node = [self childNodeWithName:@"Squirrel Hi" ]; 
if(node) 
[node removeFromParent]; 

node = [self childNodeWithName:@"Wolf Hi" ]; 
if(node) 
[node removeFromParent]; 

node= [self childNodeWithName:@"Coyote Hi"]; 
if(node) 
[node removeFromParent]; 

node= [self childNodeWithName:@"Rabbit Hi"]; 
(if(node) 
[node removeFromParent]; 

Antwort

0

Meine beste Vermutung ist, diese könnten Sie Probleme verursachen ...

node = [self childNodeWithName:@"Goat Hi" ]; 
if(node) 
[node3 removeFromParent]; 

es könnte sein, dass „Ziege Hallo“ auf dem Bildschirm ist immer noch da und auf dem neu erstellten Video Knoten. Es sieht so aus, als würde es nicht spielen, aber Sie würden immer noch Geräusche hören.

node = [self childNodeWithName:@"Goat Hi" ]; 
if(node) 
[node removeFromParent]; 

Sollte das Problem beheben, wenn das der Fall ist. Hoffentlich hilft das.

+0

Danke Ich hätte die 3. Ich hatte jeden Knoten namens node1, node2, aber änderte sie alle zu Knoten nur für Stack-Übersicht. Es ist nicht das Problem. Ich denke, es kann mit anderen Aktionen auf dem gleichen Bildschirm als das Video spielen zu tun haben, aber es ist nur eine Theorie –

+0

Mai brauchen einen separaten Thread von der Hauptsache Video zu spielen, aber nur ein Gedanke. –

+0

Hat sich als Apple iOS <10 Bug mit Videos in SpriteKit durchgesetzt. iOS 10 funktioniert gut. –