2011-07-02 13 views
2

私がやっていることは、ランダムに動く(数千までの)画面上に多くの小さな四角形を表示することです。何千もの四角形を効率的に描画しアニメーション化する

私は、(動きの座標を決定するという観点から)この背後にある仕組みを持っていますが、形状を描いたり動きをモデル化する最良の方法を理解できません。

私が試したカップルの戦略は、まずNSViewのサブクラス(これはMac上にあります)を作成し、これらを何千も作成することでした。次に、自分自身の内側に四角形を描画するためにdrawRect:関数を変更します。それから、場所を移動して移動するだけで簡単です。しかし、これらの数千のインスタンスが割り当てられていると、パフォーマンスは明らかにひどいです。

NSRectFillを使用して数千の長方形を描画するだけで、オブジェクト指向のルートも少なくなりました。しかし、私はこれで必要な動きを実現するのに苦労しましたが、速くて驚異的でした。

このアニメーションをどのようにして正常に作成できたかについてのご意見はありますか?

答えて

2

Layers and Core Animationは、プラットフォームに最適なアプローチです。

+0

私はこのソリューションを千枚の「CALayers」で試してみました。しかし、1万以上の「CALayers」以上では、遅れが始まります。これには何か解決策はありますか? –

+0

@OathComradeもっと詳しくないと言うことは不可能です。レイヤーはどのように作成されますか?どのように維持されていますか?キャッシュポリシーは何ですか?その他あなたの問題とすべての関連情報(コードを含む)を別の質問として投稿してください。 –

1

数千の四角形がCoreAnimationには多すぎます。 OpenGLの使用を検討する必要があります。

+0

おそらくそうではありません。 Core Animationのオリジナルデモでは、850の長方形 - *ビデオクリップ*を再生していました。 http://youtube.com/watch?v=pyd8O-2mkgk 2〜4年後の新しいGPUで「数千」の静的な長方形が問題にならないはずです。もちろん、それを試してみるのが一番の方法です。 –

+1

@Ryan最初に測定してください。 –

+0

あなたの平均的なiOSのUI画面には、一度に数百の「CALayers」が簡単に表示されます。各UIViewには独自のCALayerがあり、UIViewsはすべての場所で使用されます*。 –