2009-04-17 9 views
0

J'essaie d'écrire un match face à face iPhone Air Hockey (comme). Lorsque l'utilisateur touche l'écran, je déplace le «puck» en plaçant le centre UIImageView où se trouve le centre tactile.Pourquoi le déplacement manuel d'un UIImageView est-il lent?

Aussi je déplace le puck (un autre UIImageView) en utilisant une minuterie. Cette méthode est lente et fragile. Je sais que je peux obtenir des performances avec OpenGL ES, mais je ne veux pas que cela soit impliqué si je peux l'aider.

Je voudrais également profiter du moteur d'animation pour les effets spéciaux et autres. Comment puis-je déplacer manuellement les palettes et la rondelle à une minuterie et obtenir de meilleures performances. Ou dois-je simplement adopter OpenGL ES pour cela?

+2

Quel est le taux de mise à jour de votre minuterie? Est-ce que les images ont de la transparence? Avez-vous essayé d'activer l'attribut opaque? J'utilise la même approche (en déplaçant UIImageViews) et cela semble fonctionner correctement pour moi. – FogleBird

+1

Avez-vous essayé de dessiner manuellement la rondelle (dans drawRect) plutôt que d'utiliser une image? Je suis d'accord avec M. Bird - la période de temps semble clé - et tout autre code que vous vous sentez capable de poster. –

+0

Comment définir le taux de mise à jour de la minuterie? – pgb

Répondre

3

Ou dois-je simplement adopter l'OpenGL?

Il n'y a pas de compromis: CoreAnimation.

Matt Gallagher a un demo game (pour Mac) qui utilise Core Animation pour afficher les sprites. Vous ne verrez pas la même performance sur l'iPhone que sur le bureau, mais votre jeu est beaucoup plus simple que son exemple.

Questions connexes