Ho un'app di disegno e vorrei che i miei utenti potessero utilizzare gli effetti particellari come parte del disegno. Fondamentalmente, il punto dell'app è eseguire il disegno personalizzato e salvarlo nel rullino fotografico o condividere sul World Wide Web.CAEmitterLayer non esegue il rendering quando -renderInContext: di superlayer si chiama
Ho rilevato la classe CAEmitterLayer
di recente, che ritengo sarebbe un modo semplice ed efficace per aggiungere effetti particellari.
Sono stato in grado di disegnare le particelle sullo schermo nell'app utilizzando l'implementazione CAEmitterLayer
. Quindi il rendering sullo schermo funziona bene.
Quando vado circa rendere il contenuto del disegno utilizzando
CGContextRef context = UIGraphicsBeginImageContextWithSize(self.bounds.size);
// The instance drawingView has a CAEmitterLayer instance in its layer/view hierarchy
[drawingView.layer renderInContext:context];
//Note: I have also tried using the layer.presentationLayer and still nada
....
//Get the image from the current image context here for saving to Camera Roll or sharing
....the particles are never rendered in the image.
Quello che penso sta accadendo
Il CAEmitterLayer
è in un costante stato di "animare" le particelle. Ecco perché quando provo a renderizzare il livello (ho anche provato a eseguire il rendering di layers.presentationLayer
e modelLayer), le animazioni non vengono mai salvate e quindi il rendering dell'immagine fuori schermo non contiene le particelle.
Domanda Qualcuno ha reso il contenuto di uno schermo esterno CAEmitterLayer
? Se è così, come avete fatto?
Domanda alternata Qualcuno sa di librerie di sistema con effetti particellari che non usano OpenGL e non sono Cocos2D?
Hai avuto fortuna? –
No, vedere la risposta di Revis in basso. CAEmitterLayer non può chiamare renderInContext: – micksabox