2011年7月3日日曜日

CCVideoPlayerで、OS3.1以前の場合のコントローラを非表示にする。

CCVideoPlayerImpliOS.mで、playMovieAtURLメソッドを変更した。
MPMoviePlayerControllerのコントローラを非表示にするメッセージ。

[theMovie setMovieControlModeMPMovieControlModeHidden];


theMovieはMPMoviePlayerControllerのインスタンス変数。

下のように、このメソッドの頭のほうでも同じ命令があるが、
一番最初のムービー表示のときにコントローラが表示されてしまい。
2回目からは、非表示になるという現象が出ていた。


#ifdef __IPHONE_OS_VERSION_MIN_ALLOWED
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 30200
else if ( [theMovie respondsToSelector:@selector(setMovieControlMode:)] )
{
[theMovie setMovieControlMode: MPMovieControlModeHidden]; 
}
#endif
#endif

そこで以下のように追加した。

-------------- メソッドの途中から -------------------
// iOS 4.0 video player
if ([theMovie respondsToSelector: @selector(view)])
{
[keyWindow addSubview: [theMovie view]];
[ [theMovie view] setHiddenNO];
[ [theMovie view] setFrame: CGRectMake( 0, 0, keyWindow.frame.size.height, keyWindow.frame.size.width)];
[ [theMovie view] setCenter: keyWindow.center ];
        
[self updateOrientationWithOrientation: [[UIApplication sharedApplication] statusBarOrientation]];
// Movie playback is asynchronous, so this method returns immediately.
[theMovie play];
CGSize winSize = [ [CCDirector sharedDirector] winSize];
_videoOverlayView = [ [VideoOverlayView alloc] initWithFrame:CGRectMake(0, 0, winSize.height, winSize.width)];
[keyWindow addSubview: _videoOverlayView ];
}
else // iPhone OS 2.2.1 video player
{
[theMovie play];
// コントローラ非表示  <---------このように追加した
[theMovie setMovieControlMode: MPMovieControlModeHidden];
// add videoOVerlayView
NSArray *windows = [[UIApplication sharedApplication] windows];
if ([windows count] > 1)
{
// Locate the movie player window
UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
// Add our overlay view to the movie player's subviews so it is 
// displayed above it.
CGSize winSize = [ [CCDirector sharedDirector] winSize];
_videoOverlayView = [ [VideoOverlayView alloc] initWithFrame:CGRectMake(0, 0, winSize.height, winSize.width)];
[moviePlayerWindow addSubview: _videoOverlayView ];
}
}
------------ 以降省略 ------------
これで、最初の再生から非表示になったようだ。