Wie zeichne ich einen Sprit auf einem Hintergrund mit Quarz und CGLayers?
-
05-07-2019 - |
Frage
Ich bin ein Neuling in Quarz und kämpfe ich dieses Zeug Apfel zu verstehen, sagen ist sehr einfach und unkompliziert.
Ich habe zwei CGLayers erstellt: ein für einen festen Hintergrund und ein anderes für einen Sprit. Ich will das Sprite bewegen.
Sowohl der Hintergrund Kontext und der Sprite-Kontext außerhalb des Bildschirms gezogen und ich würde beide gerne auf dem Bildschirm zu sehen.
Um das zu tun - und ich bin nicht sicher, ob dies der richtige Weg ist - ich habe die folgend:
- Ich habe eine UIImageView erstellt
-
Ich habe die Ebene des Inhalts erfasst mit
resultingImage = UIGraphicsGetImageFromCurrentImageContext ();
myView.image = resultingImage;
Das zeigt mir, auf dem Bildschirm der Inhalt der beiden Quarzschichten.
Jetzt habe ich zwei Probleme:
- Dieser Ansatz ist langsam wie die Hölle
- Wenn ich die Schicht bewegen, habe ich den genannten Code und zu wiederholen, selbst diese Weise ist die Schicht nicht MOVING !!!!
Also, bitte, iPhone-Gurus da draußen, bitte mir sagen, ob es eine andere Art und Weise ist das mit Quarz zu tun und was ich zu tun, das Sprite bewegt, um zu sehen !!!!
Dank für jede Hilfe!
Lösung
Der Hauptgrund CALayer
s zu verwenden, ist die GPU Composite auf den Bildschirm Speicher direkt zu erhalten. Mit UIGraphicsGetImageFromCurrentImageContext()
Ergebnisse in dem Bild auf der GPU Compositing wird, in den Hauptspeicher übertragen und dann wieder zurück auf den Bildschirm zu zeichnen, die wirklich langsam. Was man stattdessen tun sollten, Ihre neue Schichten Subschichten Ihrer Ansicht der Schicht zu machen:
[self.view.layer addSublayer:myNewLayer];
Für ein gutes Beispiel dafür, wie CALayer
s in einem Spiel zu verwenden, finden Sie unter: GeekGameBoard