Question

Je suis aux prises avec des animations conceptualiser avec CALayer par opposition à de UIView propres méthodes d'animation. Jeter « Core Animation » sur cette question et, bien, peut-être quelqu'un peut articuler ces concepts d'un niveau élevé pour que je puisse mieux visualiser ce qui se passe et pourquoi je veux migrer des animations UIView (que je suis tout à fait familier avec maintenant) aux animations CALayer sur l'iPhone. Chaque vue à Cocoa-Touch est automatiquement une couche. Et, il semble, vous pouvez animer un et / ou l'autre?!? Même les mélanger ensemble?!? Mais pourquoi? Où est la ligne? Quel est le pro / con à chacun?

Le Guide de programmation Core Animation saute immédiatement dans la couche et Timing classes et je repensez besoin de faire un pas et de comprendre pourquoi ces pièces variées existent et comment se rapportent les uns aux autres.

Était-ce utile?

La solution

Utilisez des vues pour le contrôle et les couches pour bonbons pour les yeux. Les couches ne reçoivent pas des événements de sorte qu'il est plus facile d'utiliser une vue pour ces cas, mais quand vous voulez animer un sprite ou arrière-plans, etc., des couches de sens. Les événements passent à travers des couches à la vue de support afin que vous puissiez avoir une représentation assez visuelle sans gâcher vos événements. Essayez de superposer une vue que vous êtes juste à l'aide d'une représentation visuelle et vous devrez passer les événements de robinet à travers le point de vue sous-jacente vous.

Autres conseils

Un UIView est toujours rendu à un CALayer. Lorsque vous utilisez des méthodes de UIView pour animer une vue, vous manipulez efficacement le CALayer sous-jacent.

Si vous avez besoin de faire des choses simples, utiliser les méthodes de UIView. Pour situatins plus complexes, ou si vous voulez des couches non associées à une vue en particulier, l'utilisation CALayers.

Je l'ai fait un tas d'applications dans la dernière année. Voici ma règle:

  1. Utilisez UIView jusqu'à ce qu'il ne fait pas ce que vous voulez.
  2. Ensuite, passez à CoreAnimation. Mais avant d'entrer dans ce trop ...
  3. Si vous écrivez plus de quelques animations, utilisez Cocos2D.

UIView ne sont que des transformations 2D et sont limités à cela, CAlque transforme peut cependant être en 3D et vous devez utiliser les si vous voulez faire des choses 3D, animation UIView ne fonctionnera que si vous modifiez soit la UIView transformez ou CALayer transformez. Ainsi, à un niveau de base, vous pouvez faire beaucoup plus de manipulation lorsque vous travaillez avec une couche plutôt que la vue.

Je ne sais pas si je comprends mal la réponse de Chris à « Qu'est-ce Cocos2D faire mieux? Ne vous avez d'autres problèmes, alors, en ce qui concerne la gestion de l'événement toucher et beaucoup d'autres choses qui manque dans openGL ES? »

On dirait que la réponse suggère Cocos2D ne repose pas sur le cadre OpenGL ES, alors qu'en fait il est réel. Alors qu'il est un grand moteur de jeu 2D n'implémente OpenGL pour une grande partie de ce qui est rendu - attaché à une bibliothèque de la physique, il permet beaucoup de possibilités très intéressantes pour l'animation - et Chris est correct - il est beaucoup moins de codage en effet

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top