Frage

Ich habe Schwierigkeiten, Animationen mit einem zu konzipieren CALayer im Gegensatz zu UIViews eigene Animationsmethoden.Werfen "Kernanimation„In dies hinein, und vielleicht kann jemand diese Konzepte auf einer höheren Ebene artikulieren, damit ich mir besser vorstellen kann, was passiert und warum ich UIView-Animationen (mit denen ich jetzt ziemlich vertraut bin) zu CALayer-Animationen auf dem iPhone migrieren möchte .Jede Ansicht in Cocoa-Touch erhält automatisch eine Ebene.Und es scheint, man kann einen animieren und/oder das andere?!? Sogar miteinander vermischen?!?Aber warum?Wo ist die Leitung?Was sind die Vor- und Nachteile jedes einzelnen?

Der Core Animation Programming Guide springt sofort in die Layer- und Timing-Klassen ein, und ich denke, wir müssen einen Schritt zurücktreten und verstehen, warum diese unterschiedlichen Teile existieren und in welcher Beziehung sie zueinander stehen.

War es hilfreich?

Lösung

Verwenden Sie Ansichten zur Kontrolle und Ebenen als Augenschmaus.Ebenen empfangen keine Ereignisse, daher ist es in diesen Fällen einfacher, eine Ansicht zu verwenden. Wenn Sie jedoch ein Sprite, Hintergründe usw. animieren möchten, sind Ebenen sinnvoll.Ereignisse werden direkt über die Ebenen in die Hintergrundansicht übertragen, sodass Sie eine hübsche visuelle Darstellung erhalten, ohne Ihre Ereignisse durcheinander zu bringen.Versuchen Sie, eine Ansicht zu überlagern, die Sie nur zur visuellen Darstellung verwenden, und Sie müssen Tippereignisse selbst an die zugrunde liegende Ansicht weiterleiten.

Andere Tipps

Ein UIView wird immer zu a gerendert CALayer.Wenn Sie verwenden UIView Mit den Methoden zum Animieren einer Ansicht manipulieren Sie effektiv das zugrunde liegende CALayer.

Wenn Sie einfache Dinge erledigen müssen, verwenden Sie die UIView Methoden.Für komplexere Situationen oder wenn Sie Ebenen wünschen, die keiner bestimmten Ansicht zugeordnet sind, verwenden Sie CALayers.

Ich habe im letzten Jahr eine Reihe von Apps erstellt.Hier ist meine Faustregel:

  1. Verwenden Sie UIView, bis es nicht mehr das tut, was Sie wollen.
  2. Wechseln Sie dann zu CoreAnimation.Aber bevor Sie sich zu sehr darauf einlassen ...
  3. Wenn Sie mehr als ein paar Animationen schreiben, verwenden Sie Cocos2D.

UIView-Transformationen sind nur 2D und darauf beschränkt, LAyer-Transformationen können jedoch 3D sein und Sie sollten diese verwenden, wenn Sie 3D-Sachen machen möchten. Die UIView-Animation funktioniert, wenn Sie entweder die UIView-Transformation oder die CALayer-Transformation ändern.Grundsätzlich können Sie also viel mehr Manipulationen vornehmen, wenn Sie mit einer Ebene statt mit der Ansicht arbeiten.

Ich bin mir nicht sicher, ob ich Chris' Antwort auf die Frage „Was macht Cocos2D besser?“ falsch verstehe.Haben Sie dann keine anderen Probleme, was die Handhabung von Touch-Ereignissen und viele andere Dinge betrifft, die in openGL ES fehlen?“

Es hört sich so an, als ob die Antwort darauf hindeutet, dass Cocos2D nicht auf dem OpenGL ES-Framework basiert, obwohl dies tatsächlich der Fall ist.Obwohl es sich um eine großartige 2D-Spiele-Engine handelt, implementiert sie OpenGL für einen Großteil des Renderings – verbunden mit einer Physikbibliothek ermöglicht sie viele sehr interessante Möglichkeiten für Animationen – und Chris hat Recht – es ist in der Tat viel weniger Codierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top