私のアプリではランダムな動画を再生しています。彼らはmp4形式です。下のコードを使用して、再生するビデオを決める乱数を選択します。それは多くの時間を再生するようだが、他の回だけ音はビデオなしで再生されます。私はz値の問題をテストしましたが、バックグラウンドや何もない場合でもこれを実行します。どんな助けでも大歓迎です、私は9.2を含む多くのiOSバージョンでコンパイルしようとしましたが、それでも問題は解決しません。再生していないビデオと唯一のサウンドは無作為であり、パターンはありません(時には40回以上の再生が頻繁に起こります)、サウンドがビデオに埋め込まれています。Spritekit - SKSpriteNodeのビデオが時々再生され、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];
ありがとうございました。3. node1、node2という名前の各ノードを持っていましたが、スタックオーバービューのためにすべてノードをノードに変更しました。それは問題ではありません。私はそれがビデオと同じ画面上で起こっている他のアクションと関係があるかもしれないと思うが、それは単なる理論である。 –
ビデオを再生するためにメインから別々のスレッドを必要とするかもしれない。 –
SpriteKitに動画を含むリンゴiOS <10のバグに終わった。 iOS 10は正常に動作します。 –