Core Animationを使ってみる

Leopardのユーザインタフェースの大きな特徴は、アニメーションだ。Time Machineしかり、Cover Flowしかり、Spacesしかり。アニメーションが初見での大きなインパクトを与えており、またその同じアニメーションを使い込んでいくうちに手放せない機能となっていく。

そんなアニメーションユーザインタフェースを支えているのが、新しく追加されたフレームワークであるCore Animationだ。Core Image、Core Video、Core Audioに続く、新たなCoreメディアとして追加されたものになる。

Core Animationの利点は、なんといっても手軽さにある。一般にアニメーションのプログラミングは、ちょっと考えただけでも、絶望的に複雑だ。タイムラインの管理、非同期的な描画、アニメーション中のキャンセルやパスの変更、複数アニメーションの連携、スレッドの管理とパフォーマンスの向上など、考慮しなくてはいけない事柄が、あまりに多すぎる。Core Animationを使えば、これらを非常に簡単なプログラミングで済ませられるのだ。

本稿では、Core Animationの入門となるチュートリアルを紹介しよう。アニメーションプログラミングを学ぶには、とにかく動かしてみることに限る。出来るだけ手早くアニメーションを行ってみて、そこから徐々に複雑なアニメーションを実現してみよう。

基本はレイヤー

Core Animationで基本となる概念は、「レイヤー」だ。

レイヤーを理解するには、セルアニメーションを思い起こしてもらうのがいい。画像やテキストなどを、独立したレイヤーに描き、それらを重ね合わせて表現するのだ。それぞれのレイヤーは、独立して動かすことが出来る。

たとえば、まず背景となるレイヤーを用意する。その上に、画像を描くレイヤーを重ねる。画像レイヤーは、背景はそのままに、自由に動かすことができる。拡大/縮小や回転も出来るし、透明度を変更することもできる。

レイヤーはとても軽量で、数千のレイヤーを同時に動かすことも出来る。このパフォーマンスの良さは、Cover Flowなどで日々体験出来ていることだろう。