2012-07-20 4 views
0

현재 Android 용 소형 게임을 제작 중입니다. 캔버스와 그 drawBitmap 메서드를 사용하여 게임 레벨을 그리는 중입니다. 이를 위해 XNA 원칙을 다소 이식했습니다 (Update - Draw Loop 등).캔버스에 비트 맵이 표시되지 않습니다.

"drawStaticParts"메소드도 추가했습니다. 이 메서드를 사용하여 특정 부분을 한 번만 그립니다. 이 메서드는 Update-Draw 루프가 시작되기 전에 호출됩니다. 이 방법에서는 (Canvas를 사용하여) Bitmap에 그립니다. 이 비트 맵은 나중에 drawColor (Color.Black)을 호출하는 것처럼 동적 부분을 그리기 전에 Draw에서 이전 상태를 "복원"하는 데 사용됩니다.

이것은 완벽하게 작동합니다. drawBitmap 메서드로 그려지는 배경에 대해서만. 다른 비트 맵을 추가하려고하면 표시되지 않습니다. 배경이 다른 비트 맵을 대체 할 수 있는지 이미 확인했지만 백그라운드 draw 호출은 다른 drawBitmap 호출보다 먼저 발생합니다. 나는 또한 예외 또는 유사한 것을 얻지 않는다.

public void drawStaticParts(Canvas c) { 
    c.drawBitmap(TextureManager.getTexture(Element.getBackgroundID(), backgroundImg), null, new RectF(0, 0, Element.getResolution_width(), Element.getResolution_height()), null); 
    for(int i = 0; i < width; i++) 
    { 
     for(int j = 0; j < height; j++) 
     { 
      Element temp = spielfeld[i][j]; 
      if(temp != null) 
      { 
       if(Element.isStatic(temp)) 
       { 
        float x = i * Element.getElement_width(); 
        float y = j * Element.getElement_height(); 
        RectF place = new RectF(x, y, Element.getElement_width(), Element.getElement_height()); 
        Log.w("MS:doDraw", "Draw at " + x + ", " + y + " with w=" + Element.getElement_width() + " and h=" + Element.getElement_height()); 
        c.drawBitmap(TextureManager.getTexture(temp.getTextureID(), sceneryID), null, place, null); 
       } 
      } 
     } 
    } 
} 

내가 질문에 모든 값을 확인 : 여기

문제의 코드 조각입니다 모든 것이 괜찮습니다. 너비와 높이가 각각 40이고, 좌표도 맞습니다. 나는 더 이상 모른다.

나는 어떤 종류의 도움이나 조언이든지 영원히 감사 할 것입니다. 미리 감사드립니다.

추신 : 비슷한 문제가있는 스레드에서 언급 한 솔루션 중 일부를 시도했지만 아무 것도 효과가 없었습니다. 한 번만 정적 부분을 그릴 수 없습니다

답변

2

..

당신이 모든 루프를 그리는해야

때문에 그들은 때마다 당신이 현재를 무시하는 dinamic 부품을 그릴 정적 인 경우에도 캔버스 따라서 당신은 정적 인 부분을 볼 수 없습니다 ..

편집 : 다음 문제는

TextureManager.getTexture(temp.getTextureID(), sceneryID) 
,536에 있어야합니다

매개 변수를 확인하십시오 ...

+0

"이 비트 맵은 나중에 drawColor (Color.Black)에 대한 호출과 같이 동적 부분을 그리기 전에 그리기에서 이전 상태를"복원 "하는 데 사용됩니다. 이 비트 맵은 모든 루프마다 그려집니다. 그러나 초기 drawBitmap 호출은 한 번만 발생합니다. 그리고 말하기를 : 첫 번째 drawBitmap 호출 (배경)에서 잘 작동합니다. – CrankMuffler

+0

아니요 이미 모든 항목을 선택했는데 정확합니다. 배경 호출과 똑같이 작동하며 호출은 null을 반환하지 않습니다. 이는 그가 적어도 무언가를 그리는 것을 의미합니다. – CrankMuffler

+0

또한 하드 코딩 된 매개 변수를 추가하려고했지만 문제가 지속됩니다. – CrankMuffler

관련 문제