コアアニメーションを利用する Leopard 用のスクリーンセーバーを作成しました。過度に複雑なことは何もしません。CALayers と CATextLayers のツリーを使用して、次の構造でデータの「テーブル」を生成します。
- root
› maincontainer
› subcontainer
› row [multiple]
› cell [multiple]
› text layer
一度に画面に表示される CALayer は、最大で 50 個です。
「テーブル」を構築したら、CABasicAnimation を使用して「サブコンテナ」のアニメーションをビューに追加します。繰り返しますが、派手なことは何もしていません。単純なフェードインだけです。
問題は、アニメーションが発生している間は見るのが苦痛だということです。4GB の RAM を搭載した 3.06Ghz の iMac である私の開発マシンではぎこちなく、アニメーションが徐々に変化するのではなく、10 ステップに切り刻まれているようです。
スクリーンセーバーが対象としている ppc mac-mini ではさらに悪化します。アニメーションを再生することさえ拒否し、通常はアニメーションの最初 (不透明度 0%) から途中 (50%) まで「トゥイーン」してから完了します。
私は ObjectiveC に比較的慣れておらず、私の経験はガベージ コレクション環境の使用に基づいていますが、スクリーンセーバーがそのような問題を引き起こし始めた時点で十分なメモリ リークが発生しているとは信じられません。
また、ハードウェアの問題ではないと確信しています。コアアニメーションを使用する組み込みのスクリーンセーバーをテストし、比較のためにいくつかの無料の CA ベースのものをダウンロードしましたが、どちらのマシンでも問題なく動作します。
スクリーンセーバーでの CA の使用、または一般的な CA の使用に関する Google の情報はかなり少なく、スクリーンセーバーのプロファイリング/トラブルシューティングに関するアドバイス/チュートリアルは存在しないようです。したがって、コミュニティが提供できる支援は大歓迎です!
- - アップデート - -
暗黙のアニメーションが物事を少しスムーズにするのに役立つようです。まだ少しぎくしゃくしていますが、私のソリューションのように明示的なアニメーションですべてをアニメーション化しようとするほど悪くはありません。