2011年7月26日火曜日

Cocoa NSViewのアニメーション(4)

NSViewにアニメーション効果をつける、という勉強。

やりたいことは、デスクトップ上にボタンをひとつ表示して、そのボタンを押すとビヨーンともうひとつのViewが飛び出てくる、という非常に簡単なもの。


大きさ64×64ピクセルのボタン・・・というかNSViewのサブクラス。これをクリックすると


横からびよーんと伸びてくるもうひとつ。

CATransitionのMoveInが一番思い描いているものに近い動きをするようなので、FakeViewとTransitionViewというふたつのViewを用意してやってみたりしていた。結果から言うと、FakeViewを全く透明にしてしまうと望んだ通りの効果が生まれないらしい、ということがわかった。透明度を下げて、少しでも見える状態に描画するとMoveInができるのだが・・・。

NSAnimationContextを使って
    NSAnimationContext* current=[NSAnimationContext currentContext];
    rect.origin.x-=250;
    rect.size.width=300;
    [current setDuration:0.5];
    [[trasitionView animator] setFrame:rect];
こんなふうにも書いてみたが、ビヨーンと飛び出すふうにはならない。もう少し違う書き方をすればいいのか・・・。

とかやっているうちに結局いつものxcatsan師匠のこのページ、

(旧) Cocoaの日々: Windowアニメーション(その3)NSViewAnimation

の解説のとおりにNSViewAnimationでやってみたところ、ほぼ、考えていた「びよーん」が実現できた。一番簡単な方法一番よかった、というよくあるオチ。

次はもう1回クリックしたらピロピロピロ、と引っ込むようにしてみたり、下から出てきたり上に飛び出したりしてみよう。

おもしろくて何度もボタンを押してビヨーンをやってしまった。

0 件のコメント:

コメントを投稿