我正在用JavaFX構建棋盤遊戲類型遊戲。不同的GameObjects有不同的對象類型。我目前正在存儲一些靜態圖像,並在需要新的ImageView時引用它們。JavaFX:我應該使用多個ImageViews的靜態圖像
public class GameObject extends ImageView {
private static final Image BG_IMG = new Image(RESPATH + "BG.png");
private static final Image NULL_IMG = new Image(RESPATH + "NULL.png");
private static final Image T2_IMG = new Image(RESPATH + "T2.png");
private static final Image T3_IMG = new Image(RESPATH + "T3.png");
private static final Image T4_IMG = new Image(RESPATH + "T4.png");
private static final Image T5_IMG = new Image(RESPATH + "T5.png");
private static final Image T6_IMG = new Image(RESPATH + "T6.png");
//ObjectType is an enum type
private final ObjectType OBJECT_ID;
private Image img;
public GameObject(ObjectType t) {
OBJECT_ID = t;
setImage();
setImage(img);
}
private void setImage() {
switch (OBJECT_ID) {
case T2: img = (T2_IMG);
break;
case T3: img = (T3_IMG);
break;
case T4: img = (T4_IMG);
break;
case T5: img = (T5_IMG);
break;
case T6: img = (T6_IMG);
break;
case BG: img = (BG_IMG);
break;
default: img = NULL_IMG;
break;
}
}
我想知道,這是因爲我將使用相同的圖像的多個ImageViews實現圖像的好方法。
我會實現這個另一種方式:
private void setImage() {
img = new Image(RESPATH + OBJECT_ID.name() + ".png")
}
如果我這樣做了,我剛剛擺脫靜態圖像。
在多個圖像視圖中重複使用相同的圖像實例將節省內存(以及潛在的其他資源)。有可能比您所展示的方法更優雅,但這是一種可行的方法,並且應該表現良好。 –