Domanda

Sono un principiante in Quartz e sto lottando per capire queste cose che Apple dice che è molto semplice e diretto.

Ho creato due CGLayer: uno per uno sfondo fisso e un altro per uno sprite. Voglio che questo sprite si sposti.

Sia il contesto di sfondo che il contesto di sprite sono disegnati fuori dallo schermo e vorrei che entrambi fossero visti sullo schermo.

Per farlo - e non sono sicuro che sia il modo corretto - ho fatto quanto segue:

  1. Ho creato un UIImageView
  2. Ho acquisito i contenuti del livello usando

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

Questo mi mostra sullo schermo il contenuto di entrambi i livelli di quarzo.

Ora ho due problemi:

  1. Questo approccio è lento come l'inferno
  2. Quando sposto il livello, devo ripetere il codice citato e ANCHE FARE QUESTO, LO STRATO NON SI SPOSTA !!!!

Quindi, per favore, guru dell'iPhone là fuori, per favore dimmi se c'è un altro modo per farlo con il quarzo e cosa devo fare per vedere lo sprite muoversi !!!!

grazie per l'aiuto!

È stato utile?

Soluzione

Il motivo principale per usare CALayer è di far comporre la GPU direttamente nella memoria dello schermo. L'uso di UIGraphicsGetImageFromCurrentImageContext () comporta che l'immagine sia composta sulla GPU, trasferita nella memoria principale e quindi di nuovo indietro per disegnarla sullo schermo che sarà molto lento. Quello che dovresti fare invece è rendere i tuoi nuovi livelli sublayer del livello della tua vista:

[self.view.layer addSublayer:myNewLayer];

Per un buon esempio di come usare CALayer in un gioco, vedi: GeekGameBoard

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top