1

初心者の質問。。。GImageオブジェクトでブールテストを実行したいのですが、方法がわかりません。たとえば、GImageが「image1.jpg」ファイルを表示している場合、「a」を実行します。しかし、それ以外のものが表示されている場合は、「b」を実行します。画像は私のプログラムの別の部分によってランダムに選択されています。これを行うために私が見ることができる唯一の方法は、GImageを変更するたびに変更するプレースホルダー文字列変数を作成することです(その後、プレースホルダー変数でテストを実行できます)が、最善ではないと確信しています私がやりたいことをする方法。たとえば、次のように機能しますが、実際のプログラムには関連するGImageオブジェクトと可能な画像が多数あるため、このアプローチは非常に扱いにくいものになります。

GImage image1 = new GImage("bar.jpg", 0, 0);
int var1 = 0;
GImage image2 = new GImage("sunset.jpg", 100, 0);
int var2 = 1;
GImage image3 = new GImage("bar.jpg", 200, 0);
int var3 = 0;
if (var1 == 0) {
    // returns true
}
if (var2 == 0) {
    // returns false
}
if (var3 == 0) {
    // returns true
}

私はプログラミングを学んでいるだけなので、明らかな解決策があるかもしれませんが、それを見つけることができないようです。GImageによって表示されるファイル名を返すメソッドがあれば、それは私が必要とすることを達成しているように見えますが、そのようなメソッドは見つかりませんでした。ご協力いただきありがとうございます。

4

1 に答える 1

1

適切な属性を含む独自のクラスで画像をラップすることができます。

速くて汚い:

class MyImage
{
    private String resourceName;
    private GImage gImage;

    public MyImage(String resourceName,int x, int y){
        this.resourceName = resourceName;
        this.gImage = new GImage(resourceName,x,y)
    }

    public String getResourceName()
    {
        return resourceName;
    }

    //.
    //.
    //.
}


public static final String RES_IMG_SUNSET = "sunset.jpg";

//.
//.
//.

MyImage image1 = new MyImage("bar.jpg", 0, 0);
MyImage image2 = new MyImage(RES_IMG_SUNSET, 100, 0);
MyImage image3 = new MyImage("bar.jpg", 200, 0);

if(image2.getResourceName().equals(RES_IMG_SUNSET))
{
}

ある種の一意のリソース名が必要な場合は、正規化された正規のファイル名またはURIを使用できます。別の方法は、上記の例のように、これらの名前のグローバル定数を定義することです。もちろん、GImageはそのフォーマットをサポートする必要があります。

于 2013-01-06T15:59:58.967 に答える