2010-11-08 3 views
3

Dans le cadre d'un jeu iPhone, j'ai des boutons qui poussent un peu quand vous les pressez, et rétrécissent lorsque vous relâchez (pour répondre à la saisie de l'utilisateur). Le code responsable ressemble à ceci:Core Animation mise à l'échelle bizarrement lente?

-(void) magnifyButton: (CALayer *) button 
{ 
button.transform = CATransform3DScale(button.transform, buttonPressScale, buttonPressScale, 1.0); 
} 

-(void) reduceButton: (CALayer *) button 
{ 
button.transform = CATransform3DScale(button.transform, 1.0/buttonPressScale, 1.0/buttonPressScale, 1.0); 
} 

Cela fonctionne très bien. Mais si j'appuie sur un bouton (dont chacune est une petite image sur un CALayer) à plusieurs reprises, les animations qui se déroulent en arrière-plan (dans une vue OpenGL) ralentissent à 10 FPS. Cela me semble absurde. J'ai trouvé un problème similaire here, mais comme j'utilise des animations implicites, je ne suis pas sûr de la façon dont j'optimiserais dans ce cas.

Si quelqu'un peut offrir une suggestion sur la façon de faire fonctionner cette course à une vitesse plus raisonnable, je serais très obligé. Merci d'avance pour vous

Répondre

0

Le mélange d'UIKit et d'OpenGL est possible mais nuira aux performances. Les choses à éviter en combinant les deux sont la transparence et les transformations. Il n'y a probablement pas de moyen simple d'optimiser cela, il vaut mieux faire les boutons dans OpenGL aussi. Gamesfromwithin.com a quelques bons articles sur la combinaison de UIKit et OpenGL. Cet article contient une section sur la performance (pas de solution si): http://gamesfromwithin.com/using-multiple-opengl-views-and-uikit

Vérifiez également sa présentation sur la combinaison des deux: http://gamesfromwithin.com/wp-content/uploads/2010/03/GDC10_uikit_opengl.pdf

2

Avant une animation commence, à éviter d'avoir à rendre le CALayer pour chaque cadre, la remplacer par une image de lui-même:

button.shouldRasterize = YES; 

Lorsque l'animation est terminée, définir la propriété de retour à NO.

Questions connexes