Screen Saver for MacOS X

2002/04/06


とりあえず、次の本を読んでみて、MacOS X(Project Builder)に適当に手をつけている今日このごろです。花粉のため、休日はあまり外に出ないから、そこそこの時間がとれて理解も進んでいます(^^;


Screen Saver

「Cocoaはやっぱり! ONLINE」 にあるScreen Saverのテンプレートを使って、スクリーンセーバを作ってみた。

最初はそのまま実行してみただけ、次は例にあるようにスライドバーでユーザ設定可能なパラメータを追加してみた。ここで、説明にある次のプログラムが間違っていることに気がつく。

MySaver.m
- (NSWindow*) configureSheet { 

    [ NSBundle loadNibNamed : @"MySaver" owner : self ]; 
    gTi = [ interval floatValue ]; // シートを初期化
    return( configSheet ); 
 }

ほかにも、本とヘッダーファイルを交互に見ながら、試行錯誤していく。


次に、YUKAちゃんのJPEGファイルをホームディレクトリのPicturesフォルダに置いて、画面に表示させる。MySaver.mに次のコードを追加すればよい。あとはイメージの左下位置を(x, y)で指定するだけである。
lockFocus, unlockFocusは必要ないかもしれないが、よく分からないのでつけてみた(^^;
まったく同じことをもっと短くきれいに書けるんだろうけど、メソッドを知らないんだよなぁ(^^;

NSImage* anImage;
NSMutableString* anImagePath;

anImagePath = [[NSMutableString new] autorelease];
[anImagePath appendString: NSHomeDirectory()];
[anImagePath appendString: @"/Pictures/yuka.jpg"];

anImage = [[[NSImage alloc] initWithContentsOfFile: anImagePath] autorelease];
[self lockFocus];
[anImage dissolveToPoint: NSMakePoint(x, y) fraction: 1.0];
[self unlockFocus];

スクリーンセーバーはアプリケーションではないので、Project Builderからデバッグできないのだ! これも知らないだけかもしれない(^^;;
そのうえ、出来あがったスクリーンセーバーを入れ換えるときは「System Preference」を一度終了しなければならない。「System Preference」を終了しないと、スクリーンセーバがリロードされないのである。これに気がつかず、何度修正してもうまくいかず、元に戻してもうまくいかず、いいかげん頭にきたことは、ここだけの秘密である(^^;


戻る