Le développement avec libGDX utilise souvent une classe appelée Actor ou une sous-classe d'Actor. Examinons à nouveau cette classe.
Scene2D en général. Je pense que la personne qui a appelé cet article par shinsan68k peut comprendre ce que j'ai recherché et écrit.
Bases de LibGDX 5 Utilisation de Scene2D par shinsan68k
Actor est l'un des composants de la fonction de libGDX appelée Scene2D pour créer des jeux 2D. Eh bien, en fait, c'est une classe Java.
Les acteurs sont des nœuds dans le graphe de scène Scene2D (une arborescence de tous les objets placés dans l'espace) et ont une structure hiérarchique. Vous pouvez créer une structure hiérarchique avec une sous-classe d'acteur pouvant contenir un acteur appelé Groupe.
image)
Par exemple, si vous y réfléchissez dans l'image ci-dessous, vous pouvez considérer les couvercles, les bouteilles, les boissons à l'intérieur, les étiquettes, etc. comme des acteurs. Le Groupe est un groupe qui les combine en une seule bouteille de saké. Le groupe est également une sous-classe d'acteur, on peut donc dire qu'il s'agit d'un type d'acteur.
Illustration du saké japonais pétillant-Irasutoya
Voici un code source très simplifié. (En fait, il faut ajouter l'image correspondante, ajuster la position, ajuster la taille, etc.)
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(); //couvercle
Actor bottle = new Actor(); //bouteille
Actor label = new Actor(); //étiquette
Actor sparklingAlcohol = new Actor(); //Saké
addActor(cap);
addActor(bottle);
addActor(label);
addActor(sparklingAlcohol);
}
}
Si vous ajoutez ce Sparkling Nihonsyu à un acteur dans un autre endroit, ces acteurs seront ajoutés au graphique de la scène et vous serez heureux de pouvoir afficher du saké n'importe où. Acteur (ou Groupe) est utilisé comme ça.
Avez-vous déjà utilisé Photoshop, GIMP ou tout autre outil de peinture capable de gérer plusieurs calques comme ça? Le groupe est proche de cette couche.
Le grand avantage de Group est que le changement de taille appliqué à Group est appliqué à tous les acteurs des éléments enfants. Par conséquent, si vous utilisez setScale (0.5f) pour un saké étincelant, vous pouvez conserver l'agrandissement de l'image de la bouteille, de l'étiquette et du couvercle.
position (x, y), taille rectangulaire, origine (originX, originY), échelle (scaleX, scaleY), rotation, couleur (la valeur par défaut est nouvelle couleur (1, 1, 1, 1)), parent Autres domaines privés
Tout comme si vous jetiez un œil à javadoc. .. Class Actor
C'est une méthode de dessin, mais c'est une implémentation vide
Appelé lors de la mise à jour d'un acteur. Notez qu'il est appelé chaque image.
Renvoie une instance de lui-même lorsqu'il est touché dans les coordonnées x, y dessinées de l'acteur
Effacez-vous du graphique de la scène
Ajouter / supprimer des écouteurs d'événements
Ajouter / supprimer une action
Renvoie un tableau de tous les inscrits
Que vous ayez une action
Supprimer l'Aciton enregistré
Supprimer l'auditeur enregistré
Supprimer tous les auditeurs
Supprimer l'action et l'écouteur enregistrés
Comme il est protégé, si vous le remplacez, vous serez averti lorsque chaque état changera
Convertit les coordonnées de l'écran en coordonnées locales de l'acteur. L'arborescence est appelée récursivement de la scène à l'acteur (Coordonnées de la scène → Coordonnées locales de l'instance d'acteur 1 → Coordonnées locales de l'instance d'acteur 2 ... → Coordonnées locales de l'instance d'acteur N
Contrairement à screenToLocalCoordinates, la conversion des coordonnées est lancée à partir du parent de l'acteur qui a appelé cette méthode.
Convertit les coordonnées locales de l'acteur en coordonnées de la scène. C'est l'opposé de screenToLocalCoordinates. Il se propage de l'enfant au parent.
Cette méthode convertit les coordonnées de l'acteur en coordonnées du parent supérieur suivant.
Il est utilisé lorsque vous souhaitez connaître les coordonnées d'un acteur spécifique. Il s'agit d'une conversion de coordonnées de l'acteur actuel vers l'acteur spécifié.
Appelé lors de la conversion des coordonnées d'un élément parent en élément enfant Actor. En regardant l'implémentation, il semble qu'il soit censé être appelé lors de la conversion de Stage (root) à Actor.
Actor a deux types d'événements. La phase de capture et la phase normale.
Il peut être utile de décrire la phase de capture comme un intercepteur avant que l'événement ne soit notifié.
Il est utilisé lorsque le parent gère et annule l'événement avant que l'événement ne se produise dans le flux suivant.
Stade → Acteur 1 → Acteur 2 → Acteur où l'événement se produit
La phase normale est un événement de clic très courant. Dans ce cas, la gestion des événements n'est possible que pour l'acteur où l'événement se produit. De plus, la direction de la flèche est inversée et la propagation est telle qu'elle monte de l'acteur à la scène (c'est-à-dire l'itinéraire).
Stade ← Acteur 1 ← Acteur 2 ← Acteur où l'événement se produit
Je pense qu'il y a plus d'auditeurs dans la phase normale lorsque l'on considère lequel utiliser. Cependant, il semble qu'un mécanisme puisse être bien créé en utilisant l'écouteur de capture si nécessaire.
Les événements d'écoute fournissent des méthodes d'arrêt et d'annulation. stop = arrêter la propagation cancel = Annuler la propagation et ne faire aucun traitement (rembobinage)
En d'autres termes, le flux tel que décrit ci-dessus s'arrête. Cela semble être à la fois une phase de capture / normale.
//Phase de capture. Non transmis à Actor2
Stage → Actor 1 → stop!!→ x Acteur 2 → Acteur où l'événement se produit
//Phase normale. Non transmis à Actor2
Stage ← Actor 1 ← Actor 2 x ← stop!!← Acteur où l'événement se produit
Compte tenu de la portée de Scene2D (qui peut inclure l'intégralité de la libGDX) Application = champ d'application Stage = Portée de la session Acteur = Voir la portée Je pense que c'est comme ça.
L'acteur est une interprétation élargie. Cela dépend de l'échelle de l'acteur, et c'est une classe assez abstraite, donc je ne pense pas pouvoir le dire. Si vous pensez que c'est un écran ou un composant, je pense que ce n'est pas hors de propos.
Application est une interface appelée com.badlogic.gdx.Application. Il gère les informations et le cycle de vie de chaque plateforme. ApplicationListener ou ApolicationAdapater est spécialisé uniquement pour le cycle de vie appelé depuis Application, et je pense qu'une classe appelée XXXGame sera créée avec gdx-setup.jar, mais s'il s'agit d'une classe implémentée pense.
Stage est l'élément racine de l'arborescence Scene2D qui regroupe les acteurs. Il gère les événements d'entrée et ainsi de suite.
Quelles sont les forces et les faiblesses?
Il y a un tel échange dans le débordement de pile.
When to use actors in libgdx? What are cons and pros? - stack overflow
Il semble que ce soit une histoire sur le moment d'utiliser Actor, en commençant par ce qu'il faut faire correctement avec Stage et Actor.
Vous pouvez facilement implémenter des animations et des effets à l'aide de la classe Actions
Les acteurs peuvent être regroupés et utilisés sur chaque écran ou composant
Stage hit renvoie toujours le premier acteur (avec acteur) qui implémente la méthode hit. L'acteur effectue une itération pour une méthode de hit et renvoie null s'il n'est pas trouvé.
hit est utilisé comme méthode de Stage, mais dans l'événement tactile d'Actor, les coordonnées locales d'Actor sont transmises depuis Stage.
La scène enveloppe et gère également les objets. Par exemple, pour empêcher les autres acteurs de recevoir l'événement touchDown, seul l'acteur avec l'événement est notifié et l'autre acteur contenu dans l'acteur est arrêté sans notifier l'événement touchDown. Dans le même temps, l'acteur averti de l'événement se concentre.
Je pense qu'il est assez important de gérer l'état de l'interface utilisateur et l'état du jeu. De plus, puisque Stage est la racine, cela dépendra de Stage pour demander des informations.
Un autre est le matériau de débordement de pile.
libgdx difference between sprite and actor
Quelle est la différence entre Sprite et Actor? Alors c'est tout.
Sprite
Actor
Lorsque vous touchez libGDX pour la première fois, cela devient quelque chose comme un écran, et la configuration de l'interface utilisateur est également très simple, vous n'avez donc besoin que de Sprite, non? Vous n'avez pas besoin d'un acteur, non? Cela a tendance à l'être, mais la réponse est bonne.
Ce genre de comparaison est une expérience d'apprentissage.
Les classes d'interface utilisateur à usage général telles que la classe Text sont fournies dans scene2d.ui. https://github.com/libgdx/libgdx/wiki/Scene2d.ui
Je l'ai écrit de manière décousue, mais je vais le résumer brièvement.