Das hat mich den größten Teil des Tages gestört. Ich hatte geplant, einen Timer ähnlich dem ausgezeichneten TCProgressTimer von Tony Chamblee zu erstellen . Da meine Anwendung jedoch mehrere Fortschritts-Timer verwendet, wollte ich nicht Dutzende unterschiedlich großer Sprites für unterschiedliche Auflösungen erstellen müssen.
Meine Lösung bestand darin, SKShapeNode
Objekte in SKSpriteNode
Objekte zu konvertieren. Ich musste letztendlich zu den Grundlagen zurückkehren und Core Graphics verwenden, um das Heavy Lifting durchzuführen. Dies ist zwar eine recht unordentliche Methode, aber ich wollte schnelle Ergebnisse, um Objekte dynamisch zu erstellen, die den Ergebnissen ähneln, die bei der Verwendung von SKShapeNode
erzielt wurden.
Ich bin nur daran interessiert, zur Zeit Kreisobjekte zu machen, also habe ich es so gemacht:
%Vor% Das resultierende Sprite kann jetzt wie erwartet von SKCropNode
maskiert werden. Da diese Sprites alle generiert werden, bevor die Szene beginnt, bemerke ich keinen Leistungseinbruch. Allerdings würde ich mir vorstellen, dass diese Methode sehr ineffizient ist, wenn Sie mehrere Knoten im laufenden Betrieb generieren.
Ich würde gerne Lösungen von anderen Benutzern hören. Hoffe das hilft.
-DC
Ich habe die ähnliche Aufgabe in meiner App. Ich muss mehrere unregelmäßige Formen basierend auf Benutzereingaben zeichnen und sie dann als Masken der Schnittknoten verwenden.
Die Lösung, die für mich funktioniert, ist:
Erstellen Sie einen SKShapeNode mit dem erforderlichen Pfad
ruft mit der SKView-Methode textureFromNode:crop:
erstellt einen SKSpriteNode aus dieser Textur.
Verwenden Sie den SKSprite-Knoten als Maske.
Ihr Titel ist korrekt. Ich habe auch herausgefunden, dass ein ShapeNode in der CropNode-Hierarchie auch die darüber liegenden Kinder beeinflusst. Ich habe ein schnelles Experiment erstellt. Sie können ein neues Spielprojekt erstellen und es selbst ausprobieren. Wenn Sie eine der addChild: shapeContent-Zeilen auskommentieren, können Sie sehen, wie sich dies auf das Zuschneiden des Raumschiffbilds auswirkt.
Wie DoctorClod darauf hinweist, scheint die aktuelle Lösung dafür zu sorgen, dass alle Kinder des cropNode SpriteNodes sind.
%Vor%Tags und Links objective-c sprite-kit