2011-02-19 21 views
7

tengo una NSWindow el que se desvanecen en el de invisible a plena opacidad, durante un tiempo personalizado, utilizando el animador de proxy:Cocoa - Core Animation - Cómo detener la animación proxy?

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

Sin embargo, si intento para establecer la visibilidad de la ventana mientras la animación está procediendo, la animación no se detiene. En el siguiente ejemplo, la ventana aparecerá brevemente en 0.5 visibilidad, pero luego continuará animándose.

p. Ej.

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

Q. ¿Cómo puedo detener la animación?

Gracias.

Respuesta

8

Tengo una aplicación que hace más o menos esto (la barra de menú que cubre la ventana en Shroud) y respondiendo a esta pregunta encontré un error, aunque mis animaciones son 0.1s por lo que probablemente nunca se activen en la práctica . Pero gracias. :-)

Las duraciones de animación de 0s tienen un diseño especial para comportarse como si se configurara el valor alfa directamente, por lo que no se pueden usar, pero se puede usar una duración muy pequeña, algo así, que creará una nueva animación que reemplaza la en progreso:

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

Gracias Nicholas. Sí, acababa de llegar a la misma conclusión sobre establecer una duración mínima, después de descubrir que 0.0f no funcionaba. Aclamaciones. – SirRatty

Cuestiones relacionadas