0

我目前正在开发一款适用于 Android 的小游戏。我正在使用 Canvas 及其 drawBitmap 方法来绘制游戏级别。为此,我在一定程度上移植了 XNA 原理(例如 Update - Draw Loop 等)。

我还添加了一个“drawStaticParts”方法。我使用这种方法只绘制一次某些部分。此方法在 Update-Draw 循环开始之前调用。在这种方法中,我将(使用画布)绘制到位图上。此位图稍后用于在我绘制动态部分之前“恢复”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:我也尝试了类似问题的线程中提到的一些解决方案,但没有任何效果。

4

1 回答 1

2

你不能只画一次静态部分..

你应该在每个循环中画出它们

因为即使每次绘制动态部分时它们都是静态的,您也将覆盖当前画布,因此您看不到静态部分..

编辑:那么问题应该出在

TextureManager.getTexture(temp.getTextureID(), sceneryID)

检查参数...

于 2012-07-20T15:19:44.887 回答