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:

  1. Ich habe eine UIImageView
  2. erstellt
  3. 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:

  1. Dieser Ansatz ist langsam wie die Hölle
  2. 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!

War es hilfreich?

Lösung

Der Hauptgrund CALayers 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 CALayers in einem Spiel zu verwenden, finden Sie unter: GeekGameBoard

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top