ページ

2008年10月2日木曜日

波紋(その5)

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

いよいよ波紋に挑戦。

CIFilterを作り CATransitionへ登録する。

 NSURL* url0 = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForImageResource:@"shading"]];
CIImage* image0 = [CIImage imageWithContentsOfURL:url0];

NSRect rect = [_view bounds];

CIFilter* filter = [CIFilter filterWithName:@"CIRippleTransition"];
[filter setDefaults];
[filter setValue:[CIVector vectorWithX:NSMidX(rect) Y:NSMidY(rect)] forKey:kCIInputCenterKey];
[filter setValue:[CIVector vectorWithX:rect.origin.x Y:rect.origin.y Z:rect.size.width W:rect.size.height] forKey:kCIInputExtentKey];
[filter setValue:image0 forKey:kCIInputShadingImageKey];


CATransition *transition = [CATransition animation];
[transition setFilter:filter];


トランジション前後の画像に加えて shadingImage が必要になる。これは以前紹介したページでは「環境マップ」と呼ばれていた。今回は透明な1枚の画像を用意して使ってみた。

実行してみる。まず初期画面。


トランジション実行。


おお前回と違って動きがある。
だけどなんか違うな。
イメージとしては Dashboardの Widgetの出現の時に出る波紋を想定していたが、ああはならない。
何が違うのだろうか。。


サンプル:RippleTransition-2.zip