Реализация вентилятора - какао - PullRequest
2 голосов
/ 30 марта 2012

Я пытаюсь реализовать вид вентилятора, такой как в доке Mac OS X, например папки «Загрузки» и «Документы», используя Какао.

В настоящее время я добавляю кнопку в представлении содержимого прозрачного окнаи анимация кадра кнопки с помощью NSViewAnimation (групповая анимация).Но анимация не такая плавная, как ожидалось.

Есть ли другой оптимизированный способ для реализации этого?

1 Ответ

2 голосов
/ 31 марта 2012

Вы должны использовать Core Animation для этого. Вы должны создать прозрачное представление / окно, достаточно большое, чтобы вместить всю анимацию. Затем вы должны использовать CALayer объекты для выполнения реальной анимации.

Слои Core Animation - это, по сути, облегченные обертки высокого уровня вокруг поверхностей OpenGL, и рендеринг слоев выполняется с помощью графического процессора, что обеспечивает гораздо лучшую производительность, чем анимация, управляемая процессором, такая как NSViewAnimation.

Имейте в виду, что, поскольку слои Core Animation легкие, в них не встроена обработка событий, поэтому вам придется выполнять все отслеживание мыши в контроллере вида / представления.

Другой вариант - использование представлений со слоями (которые имеют свои собственные CALayer) и анимация положения кнопок с использованием прокси-сервера аниматора. Этого может быть достаточно для достижения того, что вы хотите, и поскольку кнопки по-прежнему заполнены NSButton объектами, они по-прежнему обрабатывают все события NSView.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...