Bei der Entwicklung mit libGDX wird häufig eine Klasse namens Actor oder eine Unterklasse von Actor verwendet. Lassen Sie uns diese Klasse noch einmal untersuchen.
Szene2D im Allgemeinen. Ich denke, dass die Person, die diesen Artikel von shinsan68k aufgerufen hat, verstehen kann, was ich recherchiert und geschrieben habe.
LibGDX-Grundlagen 5 Verwenden von Scene2D von shinsan68k
Actor ist eine der Komponenten der libGDX-Funktion Scene2D zum Erstellen von 2D-Spielen. Tatsächlich ist es eine Java-Klasse.
Akteure sind Knoten im Scene2D-Szenendiagramm (eine Baumstruktur aller im Raum platzierten Objekte) und haben eine hierarchische Struktur. Sie können eine hierarchische Struktur mit einer Unterklasse von Actor erstellen, die Actor mit dem Namen Group enthalten kann.
Bild)
Wenn Sie beispielsweise im Bild unten darüber nachdenken, können Sie sich Deckel, Flaschen, Getränke, Etiketten usw. als Akteure vorstellen. Die Gruppe ist eine Gruppe, die diese zu einer einzigen Flasche Sake kombiniert. Die Gruppe ist auch eine Unterklasse des Schauspielers, daher kann man sagen, dass es sich um eine Art Schauspieler handelt.
Illustration von Sparkling Japanese Sake-Irasutoya
Hier ist ein sehr vereinfachter Quellcode. (Eigentlich ist es notwendig, das entsprechende Bild hinzuzufügen, die Position anzupassen, die Größe anzupassen usw.)
package sample;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group;
/**
* Created by yy_yank on 2017/01/22.
*/
public class SparklingNihonsyu extends Group {
public SparklingNihonsyu() {
init();
}
public void init() {
Actor cap = new Actor(); //Deckel
Actor bottle = new Actor(); //Flasche
Actor label = new Actor(); //Etikette
Actor sparklingAlcohol = new Actor(); //Sake
addActor(cap);
addActor(bottle);
addActor(label);
addActor(sparklingAlcohol);
}
}
Wenn Sie dieses funkelnde Nihonsyu einem Schauspieler an einer anderen Stelle hinzufügen, werden diese Schauspieler dem Szenendiagramm hinzugefügt, und Sie sind froh, dass Sie Sake überall anzeigen können. Schauspieler (oder Gruppe) wird so verwendet.
Haben Sie jemals Photoshop, GIMP oder ein anderes Malwerkzeug verwendet, das mehrere Ebenen wie diese verarbeiten kann? Die Gruppe befindet sich in der Nähe dieser Ebene.
Das Tolle an Group ist, dass die auf Group angewendete Größenänderung auf alle Akteure untergeordneter Elemente angewendet wird. Wenn Sie setScale (0.5f) verwenden, um zu funkeln, können Sie daher die Bildvergrößerung der Flasche, des Etiketts und des Deckels beibehalten.
Position (x, y), rechteckige Größe, Ursprung (originX, originY), Maßstab (scaleX, scaleY), Drehung, Farbe (Standard ist neue Farbe (1, 1, 1, 1)), übergeordnetes Element Andere private Felder
Alles, als hättest du dir Javadoc angesehen. .. Class Actor
Es ist eine Zeichenmethode, aber eine leere Implementierung
Wird beim Aktualisieren eines Schauspielers aufgerufen. Beachten Sie, dass es jeder Frame genannt wird.
Gibt eine Instanz von sich selbst zurück, wenn sie innerhalb der gezeichneten x, y-Koordinaten des Akteurs berührt wird
Löschen Sie sich aus dem Szenendiagramm
Hinzufügen / Entfernen von Ereignis-Listenern
Aktion hinzufügen / entfernen
Gibt ein Array aller registrierten zurück
Ob Sie Aktion haben
Löschen Sie die registrierte Aciton
Löschen Sie den registrierten Listener
Entfernen Sie alle Listener
Registrierte Aktion und Listener löschen
Da es geschützt ist, werden Sie benachrichtigt, wenn Sie es überschreiben, wenn Sie es überschreiben
Konvertiert von Bildschirmkoordinaten in die lokalen Koordinaten des Schauspielers. Die Baumstruktur wird rekursiv von der Stufe zum Akteur aufgerufen (Stufenkoordinaten → Lokale Koordinaten der Akteursinstanz 1 → Lokale Koordinaten der Akteursinstanz 2 ... → Lokale Koordinaten der Akteursinstanz N.
Im Gegensatz zu screenToLocalCoordinates wird die Koordinatenkonvertierung vom übergeordneten Element des Akteurs gestartet, der diese Methode aufgerufen hat.
Konvertiert die lokalen Koordinaten des Schauspielers in die Koordinaten der Bühne. Es ist das Gegenteil von screenToLocalCoordinates. Es verbreitet sich vom Kind zum Elternteil.
Diese Methode konvertiert die Koordinaten des Akteurs in die Koordinaten des nächsthöheren Elternteils.
Es wird verwendet, wenn Sie die Koordinaten eines bestimmten Schauspielers kennen möchten. Es ist eine Koordinatenkonvertierung vom aktuellen Akteur zum angegebenen Akteur.
Wird beim Konvertieren von Koordinaten von einem übergeordneten Element in ein untergeordnetes Element Actor aufgerufen. Wenn man sich die Implementierung ansieht, scheint es, dass sie beim Konvertieren von Stage (root) in Actor aufgerufen werden soll.
Es gibt zwei Arten von Ereignissen, die der Schauspieler hat. Die Erfassungsphase und die normale Phase.
Es kann hilfreich sein, die Erfassungsphase als Abfangjäger zu beschreiben, bevor das Ereignis benachrichtigt wird.
Es wird verwendet, wenn das übergeordnete Element das Ereignis behandelt und abbricht, bevor das Ereignis im folgenden Ablauf auftritt.
Stufe → Akteur 1 → Akteur 2 → Akteur, an dem das Ereignis auftritt
Die normale Phase ist ein sehr häufiges Klickereignis. In diesem Fall ist die Ereignisbehandlung nur für den Akteur möglich, bei dem das Ereignis auftritt. Außerdem ist die Pfeilrichtung umgekehrt und breitet sich aus, als würde man vom Schauspieler zur Bühne (dh zur Route) klettern.
Bühne ← Schauspieler 1 ← Schauspieler 2 ← Schauspieler, bei dem das Ereignis eintritt
Ich denke, dass es in der normalen Phase mehr Zuhörer gibt, wenn man überlegt, welche man verwenden soll. Es scheint jedoch, dass ein Mechanismus gut erstellt werden kann, indem der Capture-Listener nach Bedarf verwendet wird.
Listener-Ereignisse bieten Stopp- und Abbruchmethoden. stop = Ausbreitung stoppen Abbrechen = Weitergabe abbrechen und keine Verarbeitung vornehmen (Rücklauf)
Mit anderen Worten, der Fluss wie oben beschrieben stoppt. Dies scheint sowohl eine Erfassungs- als auch eine Normalphase zu sein.
//Erfassungsphase. Nicht an Actor2 übertragen
Stage → Actor 1 → stop!!→ x Akteur 2 → Akteur, bei dem das Ereignis eintritt
//Normale Phase. Nicht an Actor2 übertragen
Stage ← Actor 1 ← Actor 2 x ← stop!!← Akteur, bei dem das Ereignis eintritt
In Anbetracht des Umfangs von Scene2D (der die gesamte libGDX umfassen kann) Anwendung = Anwendungsbereich Stage = Sitzungsumfang Schauspieler = Bereich anzeigen Ich denke es fühlt sich so an.
Schauspieler ist eine erweiterte Interpretation. Es hängt von der Größe des Schauspielers ab und es ist eine ziemlich abstrakte Klasse, also glaube ich nicht, dass ich es sagen kann. Wenn Sie es als Bildschirm oder Komponente betrachten, denke ich, dass es nicht fehl am Platz ist.
Die Anwendung ist eine Schnittstelle namens com.badlogic.gdx.Application. Es verwaltet Informationen und den Lebenszyklus jeder Plattform. ApplicationListener oder ApolicationAdapater sind nur auf den von Application aufgerufenen Lebenszyklus spezialisiert, und ich denke, dass eine Klasse namens XXXGame mit gdx-setup.jar erstellt wird, aber wenn es sich um eine implementierte Klasse handelt Überlegen.
Stage ist das Stammelement der Scene2D-Baumstruktur, die Actors bündelt. Es behandelt Eingabeereignisse und so weiter.
Was sind die Stärken und Schwächen?
Es gibt einen solchen Austausch im Stapelüberlauf.
When to use actors in libgdx? What are cons and pros? - stack overflow
Es scheint eine Geschichte darüber zu sein, wann Actor verwendet werden soll, beginnend mit dem, was mit Stage und Actor richtig zu tun ist.
Mit der Actions-Klasse können Sie Animationen und Effekte einfach implementieren
Akteure können auf jedem Bildschirm oder jeder Komponente gruppiert und verwendet werden
Der Bühnentreffer gibt immer den ersten Akteur (mit Schauspieler) zurück, der die Treffermethode implementiert. Der Akteur iteriert nach einer Treffer-Methode und gibt null zurück, wenn sie nicht gefunden wird.
hit wird als Methode der Bühne verwendet, aber im Berührungsereignis des Schauspielers werden die lokalen Koordinaten des Schauspielers von der Bühne übergeben.
Stage umschließt und verarbeitet auch Objekte. Um beispielsweise zu verhindern, dass andere Akteure das touchDown-Ereignis empfangen, wird nur der Akteur mit dem Ereignis benachrichtigt, und der andere im Akteur enthaltene Akteur wird gestoppt, ohne das touchDown-Ereignis zu benachrichtigen. Gleichzeitig wird der über das Ereignis informierte Schauspieler fokussiert.
Ich denke, es ist ziemlich wichtig, den Status der Benutzeroberfläche und den Status des Spiels zu verwalten. Da Stage die Wurzel ist, hängt es auch von Stage ab, Informationen abzufragen.
Ein anderes ist Stapelüberlaufmaterial.
libgdx difference between sprite and actor
Was ist der Unterschied zwischen Sprite und Actor? Das war's.
Sprite
Actor
Wenn Sie libGDX zum ersten Mal berühren, wird es zu einem Bildschirm, und die Konfiguration der Benutzeroberfläche ist ebenfalls sehr einfach, sodass Sie nur Sprite benötigen, oder? Du brauchst keinen Schauspieler, oder? Es ist in der Regel so, aber die Antwort darauf ist gut.
Diese Art des Vergleichs ist eine Lernerfahrung.
Allgemeine UI-Klassen wie die Text-Klasse werden in scene2d.ui bereitgestellt. https://github.com/libgdx/libgdx/wiki/Scene2d.ui
Ich habe es verwirrend geschrieben, aber ich werde es kurz zusammenfassen.