2

私はAndroid用のカードゲームをコーディングしているので、res / drawable(ldpi、hdpi、mdpi、xhdpi)に分散された4つの異なる密度の40枚のカード画像があります。

カードクラスをメンバー間のRectリージョンで定義しました。ここで、カードごとに異なる画像を印刷します。コードは次のとおりです。

package Maze;

import android.R;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;

public class Card {
    private CardNumber number;
    private CardSuit suit;
    private Rect region;
    private boolean visible;
    private Bitmap bitmap;
    private Bitmap backsideImg;

    public Card(CardNumber number, CardSuit suit){
        this.number = number;
        this.suit = suit;
        this.visible = false;
        region = new Rect();
        setBitmap();
    }

    private void setBitmap(){
        backsideImg = BitmapFactory.decodeFile(R.drawable.reverse);
        if(suit==CardSuit.HEARTS){
            switch(number){
            case ONE:
                bitmap = BitmapFactory.decodeFile(R.drawable.onehearts); // For onehearts.png file
                break;
            case TWO:
                bitmap = BitmapFactory.decodeFile(R.drawable.twohearts); // For twohearts.png file
                break;
            case THREE:
                bitmap = BitmapFactory.decodeFile(R.drawable.threehearts);
                break;
            case CUATRO:
                bitmap = BitmapFactory.decodeFile(R.drawable.fourhearts);
                break;
            // And so on...

            }
        }

    }

    public void draw(Canvas c, int x, int y){
        region.left = x;
        region.top = y;
        region.right = x + 80;
        region.bottom = y + 115;

        if(visible) c.drawBitmap(bitmap, x, y, null);
        else c.drawBitmap(backsideImg, x, y, null);

    }
}

しかし、それはリソースを見つけていません。たとえば、「1heartsは解決できないか、フィールドではありません」と書かれています。いくつかの手順が欠けていると思います。画像をリソースフォルダにドラッグアンドドロップしただけです。

私は何が欠けていますか?

4

2 に答える 2

2

ファイル名の名前を変更して、文字で始めます。自動生成R.drawableされたフィールドにはファイル名と同じ名前が付けられますが、有効なJava識別子である必要があります。

編集:

また、適切Rなクラスが含まれていることを確認してください。Card.javaクラスコードだけでなく、の完全なコンテンツで質問を更新することをお勧めします。

編集2:

android.R私が推測したように、あなたはシステムリソースクラスであるをインポートしています。R代わりに、リソースから生成されたクラスを使用する必要があります。あなたのパッケージ名を考えると、私はそれがであると期待しますMaze.R

于 2013-02-05T19:23:02.687 に答える
1

decodeFileではなくdecodeResourceを使用する必要があります

何かのようなもの:

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.oneOfHearts);
于 2013-02-05T19:55:43.637 に答える