Pregunta

Soy un novato en Quartz y estoy luchando por entender esto que Apple dice que es muy fácil y directo.

He creado dos CGLayers: uno para un fondo fijo y otro para un sprite. Quiero que este sprite se mueva.

Tanto el contexto de fondo como el contexto de sprite se dibujan fuera de la pantalla y me gustaría que ambos se vieran en la pantalla.

Para hacer eso, y no estoy seguro si esta es la forma correcta, hice lo siguiente:

  1. He creado un UIImageView
  2. He capturado el contenido de la capa usando

    resultImage = UIGraphicsGetImageFromCurrentImageContext ();
    myView.image = resultImage;

Esto me muestra en la pantalla el contenido de ambas capas de cuarzo.

Ahora tengo dos problemas:

  1. Este enfoque es lento como el infierno
  2. Cuando muevo la capa, tengo que repetir el código mencionado y ¡¡INCLUSO HACIENDO ESTO, LA CAPA NO SE MUEVE !!!!

Entonces, por favor, ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡!!

gracias por cualquier ayuda

¿Fue útil?

Solución

La razón principal para usar CALayer s es hacer que la GPU se componga directamente en la memoria de la pantalla. El uso de UIGraphicsGetImageFromCurrentImageContext () da como resultado que la imagen se componga en la GPU, se transfiera a la memoria principal y luego vuelva a dibujarla en la pantalla, lo que será muy lento. Lo que debería hacer en su lugar es hacer que sus nuevas capas sean subcapas de la capa de su vista:

[self.view.layer addSublayer:myNewLayer];

Para ver un buen ejemplo de cómo usar CALayer s en un juego, consulte: GeekGameBoard

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top