0

私は現在、Android 用の小さなゲームに取り組んでいます。Canvas とその drawBitmap メソッドを使用して、ゲーム レベルを描画しています。このために、私は XNA の原則をいくらか移植しました (更新 - ループの描画など)。

「drawStaticParts」メソッドも追加しました。この方法を使用して、特定の部分を 1 回だけ描画します。このメソッドは、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 に答える