Какао - Core Animation - Как остановить прокси анимацию? - PullRequest
8 голосов
/ 19 февраля 2011

У меня есть NSWindow, в котором я постепенно изменяю цвет от невидимого до полной непрозрачности, используя пользовательский аниматор :

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // Custom timing, 1 sec.
[[myWindow animator] setAlphaValue: 1.0f];
[NSAnimationContext endGrouping];

Однако, если я пытаюсь установитьвидимость окна пока анимация продолжается, анимация не останавливается.В следующем примере окно кратковременно появится с видимостью 0,5, но затем будет продолжать анимацию.

например

[myWindow setAlphaValue: 0.5f];  // Animation continues after calling this.

Q.Как я могу остановить анимацию?

Спасибо.

1 Ответ

8 голосов
/ 19 февраля 2011

У меня есть приложение, которое делает это в значительной степени (строка меню, закрывающая окно в Shroud ) и, отвечая на этот вопрос, я обнаружил в нем ошибку - хотя моя анимация равна 0,1 с, так что, вероятно,никогда не срабатывать на практике.Но спасибо.: -)

Длительность анимации, равная 0 с, специально разработана для того, чтобы вести себя так же, как прямая установка альфа-значения, поэтому вы не можете их использовать, но вы можете использовать очень маленькую продолжительность, что-то вроде этого, которая будетсоздайте новую анимацию, которая заменяет текущую:

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.01];
[[myWindow animator] setAlphaValue:0.5];
[NSAnimationContext endGrouping];
...