2017-10-15 7 views
0

libGDXを使用してレベル選択ページ(怒っている鳥のようなもの)を実装しています。私は、描画機能に続いてlibGDXシェイプレンダラーがバックボタンを押した後に描画しない

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(); 
} 

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) 

} 

期待どおりに動作します私は、ページインジケータを(ドットが現在のページを示す)を描画するために、このヘルパー関数を持っています。しかし、私が戻るボタン(ホームページに出る)を押すたびに、レベル選択画面に戻り、ドットが消えてしまいます。

+0

'shapeRenderer'作業を' Texture'と 'SpriteBatch'に置き換える方がいいです – Aryan

答えて

-1

問題あなたはこのページを残して影響を与えることがよく、逆に)(batch.end()batch.beginを呼び出していることですが、にバッチを続けるには、(開始)は、バッチのために有効にそれを残します図面を暗くしてください。

+0

いいえ、バッチレンダラを終了して(テクスチャレンダリング用)、シェイプレンダラを開始する必要があります(シェイプ用) – OMGPOP

関連する問題