Вопрос

Я изо всех сил пытаюсь концептуализировать анимацию с помощью CALayer в отличие от UIView's собственные методы анимации.Бросать "Основная анимация» в это, и, возможно, кто-то сможет сформулировать эти концепции на высоком уровне, чтобы я мог лучше визуализировать, что происходит и почему я хочу перенести анимацию UIView (с которой я теперь хорошо знаком) в анимацию CALayer на iPhone. .Каждое представление в Cocoa-Touch автоматически получает слой.И, кажется, можно анимировать одну и/или другой?!? Даже смешать их вместе?!?Но почему?Где линия?Какие плюсы и минусы у каждого из них?

Руководство по программированию базовой анимации сразу же переходит к классам слоев и времени, и я думаю, что нужно сделать шаг назад и понять, почему эти различные части существуют и как связаны друг с другом.

Это было полезно?

Решение

Используйте виды для контроля и слои для удовольствия.Слои не получают событий, поэтому в таких случаях проще использовать представление, но когда вы хотите анимировать спрайт, фон и т. д., слои имеют смысл.События передаются прямо через слои в фоновый вид, поэтому вы можете иметь красивое визуальное представление, не испортив события.Попробуйте наложить представление, которое вы используете только для визуального представления, и вам придется самостоятельно передавать события касания базовому представлению.

Другие советы

Ан UIView всегда отображается в CALayer.Когда вы используете UIView методы для анимации представления, вы эффективно манипулируете базовым CALayer.

Если вам нужно сделать простые вещи, используйте UIView методы.Для более сложных ситуаций или если вы хотите, чтобы слои не были связаны с каким-либо конкретным представлением, используйте CALayers.

За последний год я сделал кучу приложений.Вот мое практическое правило:

  1. Используйте UIView до тех пор, пока он не перестанет делать то, что вы хотите.
  2. Затем перейдите в CoreAnimation.Но прежде чем вы углубитесь в это слишком сильно...
  3. Если вы пишете несколько анимаций, используйте Cocos2D.

Преобразования UIView являются только 2D и ограничены этим, однако преобразования LAyer могут быть 3D, и вам следует использовать их, если вы хотите делать 3D-материалы. Анимация UIView будет работать, если вы измените преобразование UIView или преобразование CALayer.Таким образом, на базовом уровне вы можете выполнять гораздо больше манипуляций, когда работаете со слоем, а не с представлением.

Я не уверен, что неправильно понимаю ответ Криса на вопрос: «Что Cocos2D делает лучше?Нет ли у вас других проблем, связанных с обработкой событий касания и многими другими вещами, которые отсутствуют в openGL ES?"

Похоже, что ответ предполагает, что Cocos2D не основан на платформе OpenGL ES, хотя на самом деле это так.Несмотря на то, что это отличный движок для 2D-игр, он реализует OpenGL для большей части рендеринга - подключенный к физической библиотеке, он предоставляет множество очень интересных возможностей для анимации - и Крис прав - на самом деле требуется гораздо меньше кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top