2016-03-30 40 views
1

'u kullanarak değil, bazen oynar. Uygulamamda rasgele videolar oynuyorum. Onlar mp4 formatındadır. Aşağıdaki kodu kullanarak hangi videonun oynatılacağına karar veren rastgele bir sayı seçiyorum. Çok fazla zaman var gibi görünüyor ama başka zamanlarda sadece ses video olmadan oynuyor. Z değeri sorunlarını test ettim ve arka plan veya herhangi bir şey olmadığında bile bunu hala yapıyor. Herhangi bir yardım büyük ölçüde takdir edilecek, 9.2 de dahil olmak üzere birçok iOS sürümünde derlemeye çalıştım, sorunlar hala devam ediyor. Oynatma videosu ve sadece ses rastgele ve onlara hiçbir kalıp (bazen 40 kez veya daha fazla kez daha hızlı gerçekleşir), ses videoya gömülür.Spritekit - SKSpriteNode videosu, 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]; 

cevap

0

En iyi tahminle bu sorunlara neden olabileceğini olduğunu ...

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

o "Keçi Merhaba" ekranında ve yeni oluşturulan bir video düğümün üstüne hala var olması olabilir. Oynamak gibi görünmüyor ama yine de sesler alacaksın.

Sorun devam ederse, sorun giderilmelidir. Umarım bu yardımcı olur.

+0

Teşekkürler. 3 node1, node2 adlı her bir düğüme sahip oldum, ancak hepsini yığın genel bakış için değiştirdim. Sorun bu değil. Video oynatmayla aynı ekranda meydana gelen diğer eylemlerle ilgili olabileceğini düşünüyorum ama bu sadece bir teori –

+0

Ana videodan oyuna ayrı bir konuya ihtiyaç duyabilir ama sadece bir düşünce. –

+0

SpriteKit'te video içeren bir elma iOS <10 hatası olmaktan çıktı. iOS 10 iyi çalışıyor. –