试图更改参考变量

时间:2012-12-28 22:46:48

标签: java image reference resources game-engine

我有一个游戏引擎,它试图通过在HashMap中存储图像来有效地加载资源。当我想为Sprite对象加载图像时,我只想说Sprite.image = LOAD_IMAGE(imageName);

现在我正在制作这款游戏​​的地图编辑器。我希望能够通过Java Image操作旋转某些瓷砖,例如房屋的瓷砖,以面向不同的方向。我有那个工作;但是,我将图像设置为新旋转的图像的方式出现错误。我说Sprite.image = rotateImage(Sprite.image);这导致相同类型的ALL TILES具有相同的新旋转图像。

我可以在游戏中实现什么,以便每个Sprite都可以旋转而不会影响其他Sprite的图像?如果可能的话,我仍然希望保留我的HashMap,因为我认为它会真正提高我的游戏效率。

这是我实现轮换的方式:

terrain.terrainImage = ImageManipulator.mirror(currentTile.terrain.terrainImage, false);

这是我的“ImageBank”: public HashMap images = new HashMap(30);

public synchronized Image getImage(String imgName) {
    // Check if the HashMap images already has the specified image
            // by checking for the image name.
    if (imgExists(imgName)) {
        // Sprite already loaded.
        return hm.get(imgName);
    } else {
        // Sprite hasn't been loaded yet.
        Image img;
        img = loadImage(imgName);
        if (img == null) {
            // An error occured, couldn't load sprite.
            return null;
        } // else move on

        // save the loaded sprite (and now transparent) into the hashmap
        hm.put(imgName, img);
        // and then return the sprite
        return img;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以为每个图块存储旋转的角度和旋转角度(以及每次绘制时旋转它),或者将旋转的副本存储在图像上。

我建议存储旋转版本。