J'implémente une page de sélection de niveau (comme les oiseaux en colère) en utilisant libGDX. J'ai cette fonction d'assistance pour dessiner l'indicateur de page (points indiquant la page en cours):Le rendu de forme de libGDX ne dessine pas après avoir appuyé sur le bouton de retour
val shapeRenderer = ShapeRenderer()
fun drawPageIndicator(batch: Batch?, page: Int, pageCount: Int, y: Float, centerX: Float, gap: Float, radius: Float) {
batch?.end();
var fromX = centerX - pageCount/2 * gap;
if (pageCount % 2 == 0) {
fromX += gap/2;
}
shapeRenderer.projectionMatrix = batch?.projectionMatrix
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled)
for (i in 0..pageCount-1) {
if (i == page) {
shapeRenderer.color = Color.WHITE
} else {
shapeRenderer.color = Color.GRAY
}
shapeRenderer.circle(fromX, y, radius)
fromX += gap;
}
shapeRenderer.end()
batch?.begin();
}
Puis, dans la fonction de tirage au sort, je dois:
override fun draw(batch: Batch?, parentAlpha: Float) {
super.draw(batch, parentAlpha)
H.drawPageIndicator(batch, scroller.currentPage, scroller.pageCount, indicatorY, scroller.x + scroller.width/2, 16f, 4f)
}
Il fonctionne comme prévu. Mais chaque fois que j'appuie sur le bouton de retour (qui sort à la page d'accueil), puis que je reviens à l'écran de sélection de niveau, les points sont partis.
Il est préférable de remplacer votre travail 'shapeRenderer' par' Texture' et 'SpriteBatch' – Aryan