Question

Je suis un débutant dans Quartz et je me bats pour comprendre ce que Apple dit est très simple et facile.

J'ai créé deux CGLayers: un pour un fond fixe et un autre pour un sprite. Je veux que ce sprite bouge.

Le contexte de l'arrière-plan et le contexte de l'image-objet sont tous deux dessinés hors écran. J'aimerais que les deux apparaissent à l'écran.

Pour ce faire, et je ne suis pas sûr que ce soit la bonne façon, j'ai pris les mesures suivantes:

  1. J'ai créé un UIImageView
  2. J'ai capturé le contenu de la couche à l'aide de

    résultantImage = UIGraphicsGetImageFromCurrentImageContext ();

    myView.image = resultImage;

Cela me montre à l'écran le contenu des deux couches de quartz.

Maintenant, j'ai deux problèmes:

  1. Cette approche est lente comme l'enfer
  2. Lorsque je déplace le calque, je dois répéter le code mentionné et EN FAIT, LA COUCHE NE DÉPLACE PAS !!!!

Alors, s'il vous plaît, gourous de l'iPhone, dites-moi s'il existe un autre moyen de faire cela avec le quartz et ce que je dois faire pour voir le sprite bouger !!!!

merci pour toute aide!

Était-ce utile?

La solution

La principale raison d'utiliser CALayer est de faire en sorte que le GPU se compose directement sur la mémoire d'écran. Si vous utilisez UIGraphicsGetImageFromCurrentImageContext () , l’image est composée sur le GPU, transférée dans la mémoire principale puis à nouveau pour la dessiner à l’écran, ce qui sera très lent. Ce que vous devriez plutôt faire, c'est créer des sous-couches du calque de votre vue dans vos nouvelles couches:

[self.view.layer addSublayer:myNewLayer];

Pour un bon exemple d'utilisation de CALayer dans un jeu, voir: GeekGameBoard

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