2002/04/06
とりあえず、次の本を読んでみて、MacOS X(Project Builder)に適当に手をつけている今日このごろです。花粉のため、休日はあまり外に出ないから、そこそこの時間がとれて理解も進んでいます(^^;
「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」を終了しないと、スクリーンセーバがリロードされないのである。これに気がつかず、何度修正してもうまくいかず、元に戻してもうまくいかず、いいかげん頭にきたことは、ここだけの秘密である(^^;