- 2010年4月28日 18:07
- iPhone
アプリ起動時に、ムービーを表示していて、タッチしてスキップさせる方法がやっと分かりましたのでメモしておきます。
そもそも、MPMoviePlayerController の movieControlMode = YES にしておけばコントローラが出て「完了」ボタンを押せばよい話ですが、このコントローラを出したくないとき(movieControlMode = NO)に使えるのではないでしょうか。
参考にした書籍:iPhoneSDK開発のレシピ
今回はMPMoviePlayerController の上にUIViewを貼付けて、UIViewでタッチイベントを拾うようにします。
まず、起動時にムービーを表示させるのは、下記等を参考にしてください。
[iPhone] メディアプレイヤーで動画再生
ポイントは、keyWindowを取得して、それにUIViewをaddSubviewすることでした。
このkeyWindowの取得方法がなかなか分からなかった。。。
自分が試した方法は、ムービーがプリロードを完了した
- (void) finishPreload:(NSNotificationCenter *) aNotification
が呼ばれた時、MPMoviePlayerController の再生メソッドを呼んだ後にUIViewを作成しaddSubviewする。
(再生メソッドを呼ぶ前だとUIViewがムービーの背面に位置してタッチイベントがとれませんでした)
具体的には
- (void) finishPreload:(NSNotificationCenter *) aNotification {
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerContentPreloadDidFinishNotification object:player];
[player play];
//ムービースキップ用のUIView --SkipView
//SkipView にはタッチイベントを取得して、ムービー停止を呼ぶメソッドがある
skip = [[SkipView alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480)];
UIWindow *movieWindow;
movieWindow = [[UIApplication sharedApplication] keyWindow];
[movieWindow addSubview:skip];
[skip release];
}
[[UIApplication sharedApplication] keyWindow]でkeyWindowを取得してaddSubviewする。
SkipViewがタッチを取得したら、[player stop] を呼んで、画面遷移すればOK。
書籍では、UIViewを90度回転させていますが、回転させなくても問題ありませんでした。
ちなみに、ムービーは横位置(landscape)で再生されるのですが、縦位置(portrait)で再生したい場合は-90度回転させたムービーを作成すればよいです。(気がつくと当たり前なんですけど。。結構悩んだ)
- Newer: 【iPadが郡山にくるよ!】
- Older: iPhone UIImageViewのアニメ
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://www.hirano-dept.com/mt/mt-tb.cgi/97
- Listed below are links to weblogs that reference
- iPhone MPMoviePlayerController再生中にタッチイベント取得してスキップさせる from 袖触れ合うも多少の縁