Je suis intéressé à utiliser Core Animation pour piloter des animations personnalisées sur ma scène OpenGL sur l'iPhone. J'espérais trouver un mécanisme qui vous a permis d'animer génériquement un clavier d'une méthode NsObject ou une méthode de délégation pour chaque tick d'animation. Ce que j'ai proposé, c'est d'animer une propriété arbitraire d'une calayeuse et de les interrogez de OpenGL pour déterminer la progression de l'animation. Cependant, je suis convaincu qu'il y a une meilleure façon de le faire. Quel est le moyen le plus propre et le plus sûr d'exploiter ce grand moteur d'animation? P>
3 Réponses :
Ceci est possible, d'utiliser l'animation de base pour conduire tout ce que vous souhaitez. Je suis sûr que cela peut être utilisé pour le son aussi! (Donné un peu de sous-classement de Calayer). L'Uikit and Core Animation peut être mélangée assez librement, avec un peu de soin, car il y a Caeaglayer pour que nous puissions jouer avec aussi. P>
la clé ici est - (ID) PrésentationLayer et - (ID) Modellayer pour utiliser Pure / Seulement OpenGL; Bien sûr, même la hiérarchie peut également être utilisée pour votre scène OpenGL. Mais, en utilisant Calayer pour le rendu, devient encore plus «gratuitement», si cela est possible pour votre situation (mais également voir CatransformLayer), si c'est ce que vous recherchez! =) p>
Je soupçonne ce que vous voulez vraiment, ce sont juste les fonctions d'assouplissement utilisés par l'animation de base. Celles-ci sont assez faciles à trouver avec un peu de googling. Voici un exemple:
GLfloat bounceEaseOut(GLfloat ratio) { if (ratio < 1.0f/2.75f) { return 7.5625f*ratio*ratio; } else if (ratio < 2.0f/2.75f) { return 7.5625f*(ratio-=1.5f/2.75f)*ratio+0.75f; } else if (ratio < 2.5f/2.75f) { return 7.5625f*(ratio-=2.25f/2.75f)*ratio+0.9375f; } else { return 7.5625f*(ratio-=2.625f/2.75f)*ratio+0.984375f; } }
J'essayais de faire quelque chose de similaire, mettez à jour un point de vue GL basé sur sa position dans son parent lors d'une animation de CA. J'avais des résultats similaires, animation agitée qui n'était pas synchronisée avec l'animation de Ca. J'ai finalement décidé d'arrêter d'utiliser CA et d'utiliser entièrement un moteur d'interpolation différent. Maintenant, j'utilise Prtween . Ça marche très bien. Je suis sûr que certains tirages sont des tirs (vos animations sont en cours d'exécution sur le fil principal, l'interface n'est pas aussi belle que CA, et c'est un peu de buggy) mais mes animations sont en douceur. p>