February 05, 2007

quartzcomposer+cocoa フルスクリーン.app part3

Written by noriko matsumoto | Cocoa

コントロールwindow上にあるボタンを押すとqtviewのwindowがフルスクリーンになるという機能を作ります。

インターフェースビルダーから
MainManu.nibのClassesタブをクリックして新しい機能を作っていきます。
[classの作り方]
classes→NSobject→でリターンを二回押す。
するとMyObjectというのができます。これで新しいクラスができます。
今回はクラス名をfullsにしました。

0ピクチャ 8.png window2.jpg

fullsのinspecter(fullsを選んでtools→ShowInspecter)を開きます。
1.outletを作る
でAttribuleタブを選択し、まず、OutLetを追加します。addボタンでoutletを追加して、Outletnameをつけます。これはこの機能(Fulls)の出力先になります。
2.Actionを作る。
addボタンで追加しAction名をつけます。(ここでは、fullactionにしました。
これはボタンをクリックしたときに、呼ばれる関数だと思ってください。
0ピクチャ 9.png 0ピクチャ 10.png
[classファイルの生成]
Main.NibのClassesにあるfullsをえらんで以前と同じように、create files for fullsで
fulls.hとfulls.mを生成します。
[fulls.mファイルについて]
ーーーーー
#import "fulls.h"//ヘッダーファイルの読み込み

@implementation fulls

- (IBAction)fullaction:(id)sender
{//インターフェースビルダー(IB)上から、アクションが呼び出された時の
動作内容(関数名fullaction)

[ winFull setFrame: [ [ winFull screen ] frame ] display:YES];
//ディスプレイサイズにwindowをセットする。
[ winFull makeKeyAndOrderFront : self ];
//windowを最前面にする
}

@end
ーーーーーーー
fulls.mをxcodeウィンドウでダブルクリックして開き、上記の内容に書き換えてください。
fulls.hですが開くと下記のようになってますので、そのままでいいです。
----------------
/* fulls */

#import

@interface fulls : NSObject
{
IBOutlet id winFull;
//インターフェースビルダー上にはwinfullというアウトレットが設定されているという事
}
- (IBAction)fullaction:(id)sender;
//インターフェースビルダー上にはfullactionというactionが設定されているという事
@end
-----------
mとhともに保存しておきます。

tech1.pngtech2.png
[インスタンスを作る]
再び、インターフェースビルダー上に戻り、Classesからfullsを選択
そしてメニューバー→classes→Instrantiate fullsを選択します。
すると、MainMenu.nibのInstancesにブルーのBoxができています。

これはfull.classに書いた命令や機能をインターフェースビルダーで使えるようにしてくれているInstanceと呼ばれるものです。
[インターフェースと機能をつなげる]
コントロール用のwindowにボタンをおき、コントロールを押しながらボタンからfullsに向かってマウスを動かします。
tech4.png tech3.png

fullsの上につながったら、自動的にインスペクターが開きます。
Target/actionが選択でき、"fullaction"が反映されており、選択できる状態です。
fullaction選びconnectボタンを押す事と、「このwindow上のボタンを押したとき、”ullaction”が呼び出される」事になります。
つぎに先ほど設定したOutputもインターフェースビルダー上で決めてしまいます。

fullscreenにしたいのはqtviewのwindowなので、今度は先ほどと逆に、fullsのインスタンスをコントロールを押しながらクリックし、そのままqtviewの乗っているwindowのツールバーあたりまで持っていきます。

するとまたinspercterのoutletの選択項目が自動的に開きますので、そのままwinFullを選択しconnectボタンを押します。
これで、xcodeから「ビルドして実行」し、window上のボタンを押すと
fullscreenになります。

qtviewのサイズ設定
フルスクリーンにしたとき、サイズが自動でリサイズするように設定します。
tech.jpg
qtviewを選択→inspercterのサイズタブを選択→4方向をクリックしてバネ上にする。

*といったのですが、quartzcomposerファイルでclearパッチをつけるのを忘れていたのでこのまま、fullscreenにするとノイズが出てしまいます。clearを追加してください。
またG5のデフォルトのビデオカード6600ではclearをつけても、ノイズが出て対応できない
可能性があります。
この場合、フルスクリーン化のクラスを使わない方法を使いました。
例:(1074x768全画面出力希望とした場合)
最終出力の画面サイズ以上に環境設定のモニター解像度(1900x768など)を設定
xcodeのプロジェクトを立ち上げる→
qtviewをのせたwindowのサイズを希望の最終出力(1074x768)に設定
でビルドする。
→モニター解像度を最終出力ものに(1074x768)戻す→作成したappを立ち上げる。
モニター解像度が1074x768にしても、1074x768のwindowをインターフェースビルダーで作れないという所に結構ハマりました。

ここまでのサンプルです。
quartzファイルの中で使用している映像ファイルはいれてませんのでquartzファイルを開いて
適度なムービーを使用してもらえればいいです。

関連記事






次の記事

Feb 12, 07
Written by noriko matsumoto | Cocoa
qtviewをのせたwindowをマウスで移動させる方法です。 今のままフルスクリーンにしてもデュアルモニタにした画面に持っていけないので、操作ができなくなってしまい不便です。...

前の記事

Jan 31, 07
Written by noriko matsumoto | Cocoa
windowでの映像の表示ができたので次にコントロール用のwindowを作ります。 インターフェースビルダーから、cocoa...