ページ

2008年12月27日土曜日

Windowアニメーション(その1)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

SimpleViewerのウィンドウのアニメーションを実装する。やりたいのはフェードアウト。まずは検証のため調べてみた。

すると CocoaBuilderのArchiveにいい情報が見つかった。
Re: How to implement window fade-in fade-out effects
フェードアウトというよりZoomエフェクトなのだが早速試してみた。

サンプル:WindowAnimation-1.zip

アニメーションのメインは showWindow: メソッド。

- (void)showWindow:(id)sender
{
NSRect startFrom = NSZeroRect;
NSRect endAt = [_window frame];
CGFloat duration = 10;

[_window setFrame:startFrom display:NO];
[_window orderFront:nil];

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:duration];
[[_window animator] setFrame:endAt display:YES];

[NSAnimationContext endGrouping];
}


実行するとボタンのついたウィンドウが現れる。"Show Window"を押すと showWindow: メソッドが起動されアニメーションが開始される。


左下からウィンドウがZoomして現れ、徐々に画面中央の方へ大きくなりながら移動していく。そして最後に下記のウィンドウが表示される。


おお、簡単だ。

- - - -
とはいえ、上記サンプルは簡易でウィンドウ自体は拡大縮小ではなくクリッピングに近い。