Meilleure façon de disposer des écrans dans Libgdx
Quelle est la bonne façon de disposer d'un écran dans Libgdx? Actuellement, Si je clique où un bouton était sur mon écran précédent le bouton fait encore ce qu'il aurait fait si j'avais été sur l'écran. Dois-je être .dispose()
-ing tout ce que je peux dans la dispose()
méthode? ou est-il un moyen plus simple de disposer le tout sur l'écran?
OriginalL'auteur Chris | 2013-10-15
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'existe pas de moyen plus facile. Ces classes ne pas partager tout type de commune "
Disposable
" de l'interface, ou quelque chose comme ça, pour le faire automatiquement. Tout ce qui a undispose()
méthode doit être éliminée manuellement lorsqu'il n'est plus nécessaire.Ceci est également valable pour les
Screens
eux-mêmes. Lors de la commutationScreens
ils n'ont pas éliminé automatiquement, mais vous devez le faire vous-même (avant d'appelerGame.setScreen()
).D'autre part, ce n'est pas une grosse affaire. Il suffit de regarder à travers tout ce que dans votre
Screen
et de vérifier si elle a à être éliminés ou pas. Si il y a une méthode dispose, endispose()
de laScreen
.MAIS cela n'explique pas votre comportement sur les boutons invisibles à partir de la dernière
Screen
. Je suppose que vous utilisez unStage
et utiliséGdx.input.setInputProcessor(stage);
. Ce paramètre ne sera pas modifié lorsque vous modifiez l'écran et vous devez régler l'entrée du processeur à laStage
de votreScreen
, ou à tout ce qui gère l'entrée dans votreScreen
. De cette façon, le "vieux" de l'étape ne sera pas attraper des entrées plus.Les variables qui voulez-vous dire exactement? - Je garder la plupart des choses qui doivent être éliminés sur un Écran interrupteur comme la propriété privée de l'Écran de la classe elle-même, parce qu'il appartient logiquement à l'Écran.
OriginalL'auteur noone
Je peux confirmer que ce problème est de ne pas dépasser le inpur processeur une nouvelle étape. il en résulte "fantôme" boutons comme décrit.
OriginalL'auteur TypingTurtle
Malheureusement LibGDX documentation de l'API dit
Donc ce que je fais est de l'élimination de tous les consommables (tels que
Stage
,Skin
,Texture
... etc) à l'intérieur de lahide()
méthode dans l'Écran parce quehide()
est automatiquement appelé et il fonctionne très bien!exemple:
OriginalL'auteur Khalid Bhyan