【发布时间】:2014-02-20 10:50:36
【问题描述】:
我正在使用 Slick2D Java 游戏库,我想设置在我的游戏循环中传递给渲染方法的图形对象的比例。我想在 render 方法之外执行此操作,这样我只需调用 setScale() 方法一次。我正在将我的游戏实现为 StateBasedGame,所以我想在我的 StateBasedGame 类中初始化我的图形对象。哪里是合适的地方?
【问题讨论】:
我正在使用 Slick2D Java 游戏库,我想设置在我的游戏循环中传递给渲染方法的图形对象的比例。我想在 render 方法之外执行此操作,这样我只需调用 setScale() 方法一次。我正在将我的游戏实现为 StateBasedGame,所以我想在我的 StateBasedGame 类中初始化我的图形对象。哪里是合适的地方?
【问题讨论】:
在 Init 方法中,您应该在其中初始化图像。我可以对此进行扩展,但您的问题似乎承认您已经知道如何缩放图像。
编辑:重新阅读问题后,答案是每次进入游戏状态对象的渲染方法时都需要对其进行缩放。这需要你把 graphics.scale(0.5f, 0.5f);
我认为这是必需的,因为图形对象会在每个游戏周期重置其比例,这样您就不会在它调用渲染方法数百次时获得复合效果。
【讨论】:
initStatesList(GameContainer container) 方法中调用container.getGraphics().scale(0.5f,0.5f); 但这没有效果。我的猜测是因为每次都重新创建了传入每个 GameState 的 Graphics 对象?这是你说的还是你有什么进一步的建议?
graphics.scale() 方法来使游戏适应任何分辨率。如果我必须在每次渲染时调用它,这意味着我必须在每个状态的每个渲染方法中放置相同的代码行。有没有更好的方法来解决这个问题?