2017-10-15 2 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

관련 문제