我目前正在开发适用于Android的小游戏。我正在使用Canvas及其drawBitmap方法来绘制游戏级别。为此,我有点移植了XNA原理(所以更新 - 绘制循环等)。
我还添加了“drawStaticParts”方法。我使用这种方法只画一次某些部分。在Update-Draw循环开始之前调用此方法。在这个方法中,我(使用Canvas)绘制到Bitmap上。这个位图稍后用于在绘制动态部分之前“恢复”Draw中的旧状态(就像调用drawColor(Color.Black)一样)。
这完全没问题。但仅适用于背景,也是使用drawBitmap方法绘制的。一旦我尝试添加其他位图,它们就不会显示出来。我已经检查过背景是否可以覆盖其他位图,但是背景绘制调用在任何其他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,坐标也适合。我不知道更进一步。
我将永远感激任何形式的帮助/建议。提前谢谢。
PS:我也尝试了一些类似问题的线程中提到的解决方案,但没有任何效果。
答案 0 :(得分:2)
你不能只画一次静态部件..
你应该画出每个循环
因为即使每次绘制动态部件时它们都是静态的,你都会覆盖当前的画布,因此你无法看到静态部件。
编辑:那么问题应该在
中TextureManager.getTexture(temp.getTextureID(), sceneryID)
检查参数......