[JAVA] Detaillierte Erklärung Schauspieler (libGDX)

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.

Annahme

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

Was ist ein Schauspieler?

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)

scend2dgraph.png

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.

Klassenfeld des Schauspielers

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

Schauspielermethode

Alles, als hättest du dir Javadoc angesehen. .. Class Actor

Lebenszyklus-System

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

Staatliche Operation

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

Statusbenachrichtigungssystem

Da es geschützt ist, werden Sie benachrichtigt, wenn Sie es überschreiben, wenn Sie es überschreiben

Koordinatenumwandlungssystem

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.

Zweiphasenereignis

Es gibt zwei Arten von Ereignissen, die der Schauspieler hat. Die Erfassungsphase und die normale Phase.

Erfassungsphase

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

Normale Phase

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.

Hörer anhalten und abbrechen

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

Scene2D-Bereich

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.

Vor- und Nachteile des Schauspielers

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.

Vorteile

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.

Nachteile

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.

Unterschied zwischen Schauspieler und Sprite

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

Zusammenfassung

Ich habe es verwirrend geschrieben, aber ich werde es kurz zusammenfassen.

Referenz-URL

Recommended Posts

Detaillierte Erklärung Schauspieler (libGDX)
Einführung in Ratpack (3) - Hallo Welt, detaillierte Erklärung