Supprimer les acteurs de la scène?
- Je utiliser LibGDX et seulement se déplacer la caméra dans mon jeu. Hier, j'ai fondé une façon de représenter la terre dans mon jeu. Je suis en train de faire un clone de Flappy Bird, mais j'ai des problèmes avec le dessin de la terre qui se déplace sur l'écran. Dans tous les rendre appelez-je ajouter un nouveau Actor
à la Stage
mais après quelques temps, le dessin n'est pas plus fluide. Le nombre d'images par seconde couler très vite. Est-il une autre façon de tirer du sol dans les jeux?
source d'informationauteur Fabian König | 2014-03-01
Vous devez vous connecter pour publier un commentaire.
Si je suis en train de lire correctement, vous êtes le problème est qu'une fois que les acteurs hors de l'écran, ils sont encore en cours de traitement et causer de retard, et vous voulez les éliminer. Si c'est le cas, vous pouvez simplement faire une boucle par tous les acteurs de la scène, projet de leurs coordonnées à la fenêtre coordonnées, et utilisez-les pour déterminer si l'acteur est hors de l'écran.
Si les acteurs de la coordonnée x dans la fenêtre en plus, c'est la largeur est inférieure à 0, l'acteur a complètement défilé hors de l'écran, et peut être supprimée.
Une légère tweak de la solution de @kabb:
De mon expérience, appelant
actor.remove()
lors de l'itérationstage.getActors()
va casser la bouclepuisque c'est la suppression de l'acteur à partir de la matrice qui est activement itérée.Donc...la solution est de dire les acteurs à se retirer plus tard avec un
Action
Sinon...si vous ne pouvez pas attendre pour supprimer l'acteur pour une raison quelconque, vous pouvez utiliser un
SnapshotArray
:La façon la plus simple pour supprimer un acteur de son parent, il appelle sa
remove()
méthode. Par exemple: