UIView アニメーションと CALayers
-
16-09-2019 - |
質問
アニメーションを概念化するのに苦労しています CALレイヤー とは対照的に UIViewの 独自のアニメーション手法。投げる "コアアニメーション" これをこれに当てはめると、おそらく誰かがこれらの概念を高いレベルから明確に説明してくれるでしょう。そうすれば、何が起こっているのか、そしてなぜ UIView アニメーション (私は今ではよく知っています) を iPhone 上の CALayer アニメーションに移行したいのかをよりよく視覚化できるようになります。 。Cocoa-Touch のすべてのビューは自動的にレイヤーを取得します。そして、それをアニメーション化できるようです そして/あるいはもう一つ?? 混ぜ合わせても!?しかし、なぜ?線路はどこですか?それぞれの長所と短所は何ですか?
コア アニメーション プログラミング ガイドでは、すぐにレイヤーとタイミングのクラスにジャンプしますが、一歩下がって、これらのさまざまな部分がなぜ存在するのか、そして相互にどのように関連しているのかを理解する必要があると思います。
解決
コントロールにはビューを使用し、目の保養にはレイヤーを使用します。レイヤーはイベントを受け取らないため、そのような場合にはビューを使用する方が簡単ですが、スプライトや背景などをアニメーション化したい場合にはレイヤーが意味を持ちます。イベントはレイヤーを介して背後のビューに直接渡されるため、イベントを台無しにすることなく、きれいな視覚的表現を得ることができます。視覚的な表現のみに使用しているビューをオーバーレイしようとすると、基礎となるビューにタップ イベントを自分で渡す必要があります。
他のヒント
アン UIView
常にレンダリングされます CALayer
. 。使用するときは UIView
ビューをアニメーション化するメソッドを使用すると、基礎となるオブジェクトを効果的に操作することになります。 CALayer
.
単純なことを行う必要がある場合は、 UIView
メソッド。より複雑な状況の場合、または特定のビューに関連付けられていないレイヤーが必要な場合は、次を使用します。 CALayers
.
昨年はたくさんのアプリを作りました。私の経験則は次のとおりです。
- 希望の結果が得られなくなるまで UIView を使用してください。
- 次に、CoreAnimation に移動します。でも、あまり本題に入る前に…
- 複数のアニメーションを作成する場合は、Cocos2D を使用してください。
UIView 変換は 2D のみであり、それに制限されています。ただし、LAyer 変換は 3D にすることもできるため、3D を実行したい場合はそれらを使用する必要があります。UIView 変換または CALayer 変換のいずれかを変更すると、UIView アニメーションが機能します。したがって、基本レベルでは、ビューではなくレイヤーを操作するときに、より多くの操作を行うことができます。
「Cocos2D の何が優れているのですか?」に対する Chris の反応を私が誤解しているかどうかはわかりません。では、タッチ イベントの処理や、openGL ES に欠けているその他の多くの機能に関して、他にも問題はありませんか?」
その答えは、Cocos2D が実際には OpenGL ES フレームワークに基づいていないことを示唆しているように思えます。これは優れた 2D ゲーム エンジンですが、レンダリングの大部分に OpenGL を実装しています。物理ライブラリに接続されているため、アニメーションに多くの非常に興味深い可能性が可能です。Chris の指摘は正しいです。実際、コーディングの量は大幅に減少しています。