私はゲームを作成していて、内部にMap
もあるに画像を保存しています。マップをチェックして、画像の特定のキーが保存されているかどうかを確認する方法をTreeMap
作成しようとしています。getImage
そうでない場合は、リソース パッケージからイメージをロードし、マップにキーを格納してgetImage
、キーが既にマップにあるため、次にメソッドが呼び出されたときにそのイメージを早期にロードします。
問題は、キーを配置した後、マップがキーを保存しないことです。Image Loaded.
マップへのイメージ キーを参照するときのコンソール出力を受け取る必要があるように、特に同じイメージを呼び出しています。これは、保存されていないことを示すために設定したテストのコンソール出力を含むクラスです。
package game;
import java.awt.Image;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import javax.imageio.ImageIO;
public class ImageLoader {
public Image loadedImage;
private Map<String, Image> images;
public ImageLoader(){
TreeMap<String, Image> map = new TreeMap<String, Image>();
images = map;
}
public Image getImage(String s){
System.out.println(images);
try
{
if(images.containsKey(s)){
System.out.println("Loaded image.");
return images.get(s);
}
else
{
System.out.println("Not loaded.");
ClassLoader myLoader = this.getClass().getClassLoader();
InputStream imageStream = myLoader.getResourceAsStream(s);
loadedImage = ImageIO.read(imageStream);
images.put(s, loadedImage);
System.out.println(images);
return images.get(s);
}
}
catch (IOException e)
{
System.out.println ("Could not load: " + e);
}
return null;
}
}
実行時のコンソール出力は次のとおりです。
{}
Not loaded.
{resources/Asteroid.jpg=BufferedImage@1632847: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@e95a56 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 600 height = 600 #numDataElements 3 dataOff[0] = 2}
{}
Not loaded.
{resources/Asteroid.jpg=BufferedImage@1fc6e42: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@e95a56 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 600 height = 600 #numDataElements 3 dataOff[0] = 2}
{}
Not loaded.
{resources/Asteroid.jpg=BufferedImage@8ee016: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@e95a56 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 600 height = 600 #numDataElements 3 dataOff[0] = 2}
{}
Not loaded.
{resources/Alien-Ship.png=BufferedImage@1fe1feb: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@e95a56 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 45 height = 45 #numDataElements 4 dataOff[0] = 3}
値を保存してマップを正しく参照する方法はありますか?