2009-08-06 9 views
0

リモートロケーションからビデオを再生し、画面全体にウィンドウをオーバーレイしようとしていますが、エッジに沿ったイメージはほとんどなく透明です。ムービーがプリロードされると、私はビデオを再生します。これは初めてのことです。しかし、ビデオを再生しようとすると、ビデオは再生されず、プレーヤーのコントロールから再生ボタンをクリックすることもできません。私はオーバレイウィンドウがコントロール上にあると思う。どのように私はオーバーレイウィンドウ上のコントロールを取得するのですか?MPMoviePlayerControllerとオーバーレイウィンドウ

// - (無効)moviePlayerContentPreloadDidFinish:私が使用(NSNotification *)通知{

NSLog(@"content preloaded"); 
NSDictionary *userInfo = [notification userInfo]; 
if ([userInfo valueForKey:@"error"]) { 
    NSLog(@"*** An error occurred preloading the movie"); 
    return; 
} 

[self.spinner stopAnimating]; 

// Add the overlay view to the movie, so we can catch the clicks 
OverlayViewController *ovc = [[OverlayViewController alloc] initWithNibName:@"OverlayView" bundle:nil]; 
self.overlayController = ovc; 
[ovc release]; 
[self.overlayController setNextResponder:self]; 

MPMoviePlayerController *moviePlayer = [notification object]; 


[moviePlayer play]; 

// Locate the movie player window 
NSArray *windows = [[UIApplication sharedApplication] windows]; 
NSLog(@"window count= %d",[windows count]); 
if ([windows count] < 2) { 
    NSLog(@"*** Window for movie player is missing"); 
    return; 
} 

UIWindow *moviePlayerWindow = [windows objectAtIndex:1]; 
[moviePlayerWindow addSubview:self.overlayController.view]; 

}

コードが

である私が何か間違ったことをしています。オーバレイ上でコントロールを取得したり、自動再生したりすることは可能ですか?

答えて

0

2つのもの。 まず、コードに従って、moviePlayBackDidFinishメソッドで、まずmoviePlayerを解放してから、再度allocでインスタンス化する必要があります。動画を再生するたびにその操作を行う必要があります。

MPMoviePlayerController *moviePlayer = [notification object]; 
[moviePlayer release] 
... 
MPMoviePlayerController *newMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: anURL]; 

あなたのコードの構造に動作しますが、私はあなたがより良いリンゴが提供する例を見ているべきだと思う: http://developer.apple.com/iphone/library/samplecode/MoviePlayer_iPhone/index.html

第二には、オーバーレイについて、あなたは正しい、オーバーレイ取得あなたはムービープレーヤーコントロールの下に置くことはできません。オーバーレイで受け取ったイベントを使用してプレーヤーを制御する必要があります。 touchesBeganイベントを使用して、最初のタッチイベントを渡し、プレーヤで使用することができます(再生、一時停止、停止)。