Erstelle endlosen cgpath ohne gerahmte Bilder

8

Ich muss einen cgpath kontinuierlich erstellen. Im Moment mache ich das so:

%Vor%

Und nenne es so:

%Vor%

Aber das Problem ist, dass die Frames mit der Zeit immer kleiner werden. Muss ich etwas ändern, damit die Framerate nicht mehr abfällt?

Mein Ziel ist es, einen zufälligen endlosen Pfad zu erstellen.

    
Christian 28.05.2015, 18:43
quelle

1 Antwort

4

Der Schlüssel zum Beibehalten einer hohen FPS-Anzahl beim Zeichnen einer progressiv zunehmenden Anzahl von Zeilen besteht darin, schnell einen Zustand zu erreichen, in dem das Hinzufügen von mehr Zeilen zu der Szene wenig oder keinen Effekt auf die Bildrate hat. Es gibt mindestens zwei Möglichkeiten, dies zu erreichen.

Am einfachsten ist es, die zuvor gezeichneten Linien in ein SKTexture umzuwandeln und die Ergebnisse als Textur eines SKSpriteNode anzuzeigen. Hier sind die Schritte:

  1. Erstellen Sie ein SKNode , das als Zeilencontainer verwendet werden soll
  2. Erstellen Sie ein SKSpriteNode , das als Zeilenbereich verwendet wird
  3. Erstellen Sie eine SKShapeNode , die zum Zeichnen neuer Zeilen verwendet werden soll
  4. Fügen Sie den Container der Szene und den Canvas- und Shape-Knoten dem Container
  5. hinzu
  6. Zeichnen Sie eine Gruppe verbundener Liniensegmente mit der path -Eigenschaft des Formknotens
  7. Wenn die Zeilenanzahl einen vorgegebenen Wert erreicht, konvertieren Sie den Inhalt des Containers in eine 'SKTexture'
  8. Legen Sie die Textureigenschaft der Leinwand auf SKTexture fest. Beachten Sie, dass der Inhalt auch der Struktur hinzugefügt wird , da die Zeichenfläche auch ein Kind des Containers ist
  9. Aufschäumen, abspülen, Schritte 5 - 7 wiederholen

Hier ist eine Beispielimplementierung in Swift, die auf einem iPhone 6-Gerät eine endlose Reihe von Linien mit 60 FPS zeichnet (Sie sollten die Leistung auf einem Gerät nicht mit dem Simulator testen):

%Vor%     
0x141E 08.06.2015 19:43
quelle