【问题标题】:Slick2D: Initializing graphics object before game loopSlick2D:在游戏循环之前初始化图形对象
【发布时间】:2014-02-20 10:50:36
【问题描述】:

我正在使用 Slick2D Java 游戏库,我想设置在我的游戏循环中传递给渲染方法的图形对象的比例。我想在 render 方法之外执行此操作,这样我只需调用 setScale() 方法一次。我正在将我的游戏实现为 StateBasedGame,所以我想在我的 StateBasedGame 类中初始化我的图形对象。哪里是合适的地方?

【问题讨论】:

    标签: java lwjgl slick2d


    【解决方案1】:

    在 Init 方法中,您应该在其中初始化图像。我可以对此进行扩展,但您的问题似乎承认您已经知道如何缩放图像。

    编辑:重新阅读问题后,答案是每次进入游戏状态对象的渲染方法时都需要对其进行缩放。这需要你把 graphics.scale(0.5f, 0.5f);

    我认为这是必需的,因为图形对象会在每个游戏周期重置其比例,这样您就不会在它调用渲染方法数百次时获得复合效果。

    【讨论】:

    • 我试图在initStatesList(GameContainer container) 方法中调用container.getGraphics().scale(0.5f,0.5f); 但这没有效果。我的猜测是因为每次都重新创建了传入每个 GameState 的 Graphics 对象?这是你说的还是你有什么进一步的建议?
    • 哦,我看错了你原来的问题。我以为您是在要求对图像做某事,而不是实际的 Graphics 对象哈哈(有点累)。至于您要问什么,这样做是不明智的(阅读:正确处理单身人士),但是您要完成的工作应该在上面的编辑答案中。如果您需要更多帮助,请发布一些代码,我很乐意为您提供帮助。我用 slick 做了很多工作,并且非常了解我的方法。
    • 好的,我明白了,感谢您的澄清。但是,这样做对于我打算使用它的方式来说有点代码味道。我正在使用graphics.scale() 方法来使游戏适应任何分辨率。如果我必须在每次渲染时调用它,这意味着我必须在每个状态的每个渲染方法中放置相同的代码行。有没有更好的方法来解决这个问题?
    • 我真的看不出有什么问题..如果你有 3 个状态,你最多只需要写 3 个 graphics.scale(gScaleX, gScaleY) 行..?除此之外,您还可以研究一个名为 ScalableGame 的类,但我不能说它非常有用。还发现了一个包含一些分辨率拟合示例的线程:slick.ninjacave.com/forum/viewtopic.php?t=3107
    • 希望该线程可以进一步帮助您。我会尝试用自己的代码提供更多帮助,但我远离计算机。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    相关资源
    最近更新 更多