Comment créer une fenêtre contextuelle avec Scene2D?


13

J'ai un écran du menu principal avec un logo et un tas de boutons. Lorsque le bouton de connexion est enfoncé, j'ouvre une boîte de dialogue demandant un nom d'utilisateur et un mot de passe.

Cela fonctionne très bien, à part le "pop up". Pour le moment, la nouvelle boîte de dialogue change tout, mais je voudrais la positionner sur la scène actuelle.

J'apprends juste Scene2D.

Réponses:


10

La boîte de dialogue est mieux adaptée aux fenêtres contextuelles modales, et elle comprend un tableau "bouton" et "contenu" déjà dans la fenêtre (comme le disent les documents ). Vous pouvez récupérer ces tables avec getButtonTable () ou getContentTable ().

La boîte de dialogue facilite le travail avec les fenêtres contextuelles. Par exemple, voici une boîte de dialogue de confirmation:

Dialog dialog = new Dialog("Warning", skin, "dialog") {
    public void result(Object obj) {
        System.out.println("result "+obj);
    }
};
dialog.text("Are you sure you want to quit?");
dialog.button("Yes", true); //sends "true" as the result
dialog.button("No", false);  //sends "false" as the result
dialog.key(Keys.Enter, true); //sends "true" when the ENTER key is pressed
dialog.show();

Vous pouvez utiliser d'autres objets pour, disons, les options Oui / Non / Annuler.


Est-il possible que la boîte de dialogue définisse automatiquement sa taille en fonction de son contenu? On dirait qu'il est trop petit avec l'exemple ci-dessus ..
Lake

Je suppose que c'est possible en appelant la méthode pack () :)
Lake

0

Bon, puisque personne n'a répondu, je posterai ma solution.

Lorsque vous ajoutez des acteurs à la scène, plutôt que de faire:

stage.add(actor);

Ce qui ajoute une cellule avec l'acteur donné, j'ai fait ce qui suit:

stage.addActor(actor);

J'étais alors libre de chevaucher les acteurs et de les déplacer / redimensionner / faire pivoter via l'interpolation. Le seul problème que je vois actuellement est le positionnement absolu des widgets.

Pour les positionner, vous devez appeler:

actor.setPosition(x, y);

Il pourrait donc être un peu difficile de gérer des appareils Android de différents formats et résolutions.


la position absolue n'est pas vraiment un problème tant que vous définissez une taille mondiale statique et utilisez une fenêtre avec votre scène. Il gérera la mise à l'échelle, l'étirement et d'autres propriétés obscures de traitement des rapports d'aspect et des résolutions.
nhydock
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.