私は Cocoa NSWindow を作成しています。この内部 (IB 経由) には、QTCaptureView、QTMovieView、およびさまざまなボタンとテキスト フィールドがあります。
プログラム的に、私は次のことを行いました:
新しい QTMovie を作成しました:
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError
{
QTMovie *movie = [QTMovie movieWithURL:url error:outError];
if (movie){
[self setMovie:movie];
}
return (movie != nil);
}
それに応じて QTMovieView を設定します。
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
[movieView setShowsResizeIndicator:YES];
[[movieView window] setShowsResizeIndicator:NO];
mainWindow = [aController window];
[[mainWindow contentView] addSubview:movieView];
}
ムービーは正常に再生され、Web カメラがキャプチャされて表示されます。解決できないように見える問題が 2 つあります。
QTMovie のアスペクト比に従って QTMovieView のサイズを変更したいと思います。IB内でこれを行うのですが、QTMovieViewウィンドウは同じサイズのままで、ムービーのみが目的のサイズで再生されます。
また、NSWindow の周りで QTMovieView のサイズを変更して移動したいと思います。
私は Web を検索しましたが、答えが見つからなかったので、おそらくそれは実行できないことではなく、私のコードの問題です。
私は「QTKit Application Tutorial」ドキュメントから作業しています。
[2012 年 5 月 25 日編集]
28 ページ以降では、ムービーの自然なサイズ属性に合わせてウィンドウのサイズを変更する方法が説明されています。これに従いましたが、QTMovieViewウィンドウではなく、メインウィンドウのサイズが変更されました。
[[movieView window] setContentSize:contentSize];
私の理解が間違っていたようで、QTMovieView ウィンドウがメイン ウィンドウです。QTMovieView ウィンドウが置かれる追加の子ウィンドウはありません。私が配置したものだけです。
[2012 年 5 月 26 日編集]
Cocoa にはウィンドウが 1 つしかなく、子ウィンドウの概念はありません。QTMovieView をドラッグできるようにするには、マウス イベントを受け入れるようにする必要があります。これを行うには、サブクラス化してオーバーライドする必要があります。
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
基本的に、Apple の「Handling Mouse Events」ドキュメントを読んでください。
リサイズに関しては、現在鋭意制作中です。
[編集終了]
どんなアイデアでも大歓迎です。ありがとう。