현재 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이고, 좌표도 맞습니다. 나는 더 이상 모른다.
나는 어떤 종류의 도움이나 조언이든지 영원히 감사 할 것입니다. 미리 감사드립니다.
추신 : 비슷한 문제가있는 스레드에서 언급 한 솔루션 중 일부를 시도했지만 아무 것도 효과가 없었습니다. 한 번만 정적 부분을 그릴 수 없습니다
"이 비트 맵은 나중에 drawColor (Color.Black)에 대한 호출과 같이 동적 부분을 그리기 전에 그리기에서 이전 상태를"복원 "하는 데 사용됩니다. 이 비트 맵은 모든 루프마다 그려집니다. 그러나 초기 drawBitmap 호출은 한 번만 발생합니다. 그리고 말하기를 : 첫 번째 drawBitmap 호출 (배경)에서 잘 작동합니다. – CrankMuffler
아니요 이미 모든 항목을 선택했는데 정확합니다. 배경 호출과 똑같이 작동하며 호출은 null을 반환하지 않습니다. 이는 그가 적어도 무언가를 그리는 것을 의미합니다. – CrankMuffler
또한 하드 코딩 된 매개 변수를 추가하려고했지만 문제가 지속됩니다. – CrankMuffler