【问题标题】:Resize window and move contents within调整窗口大小并在其中移动内容
【发布时间】:2012-08-31 21:23:02
【问题描述】:

我有一个用 java 制作的简单游戏。本质上,我的编程能力比较基础,我希望能够调整游戏所在窗口的大小,而不是让图像停留在原来的位置,只是在更大的区域显示白度。 Here's a Screenshot.有什么简单的方法这样做?

【问题讨论】:

标签: java swing resize 2d-games


【解决方案1】:

现有的两个答案似乎假设您希望调整游戏空间的大小。

调整游戏空间的大小

射击游戏的游戏空间不一定能很好地调整大小。例如。当游戏是两倍宽时,左/右箭头键是否应该使船快两倍?垂直拉伸窗口是否会增加重力或射击速度?

填充游戏空间

按照我阅读问题的方式,您只是希望将游戏空间置于窗口的中心。可以在this answer 中看到其中的 E.G.s。

修复顶级容器的大小。

许多游戏会固定大小以避免第一种方法产生的问题类型,并避免第二种方法周围的“大空白带”。这就像调用setResizable(false) 一样简单。

为了让这项技术发挥最佳效果:

  1. 确保进行游戏渲染的组件设置了首选大小。
  2. 将它(和所有其他控件)添加到框架中。
  3. 请致电frame.pack() 以确保框架大小适合显示内容。
  4. (最后)致电frame.setResizable(false)

【讨论】:

  • 游戏不喜欢布局管理器。默认情况下,他们使用BorderLayout,因为如果未显示任何内容,则会自动选择它
【解决方案2】:

要拉伸游戏,首先将其渲染到Image。然后在即时拉伸的同时绘制图像。

Image dbImage; // The backbuffer
graphics.drawImage(dbImage, 0, 0, getWidth(), getHeight());

而且大多数游戏更喜欢在我的引擎中禁用窗口大小调整。

【讨论】:

    【解决方案3】:

    根据我对您问题的理解,您希望将游戏“延伸”到边界之外并将其扩展到窗口的其余部分。 (如果错了,哎呀:s)

    为了实现这一点,您必须做出一些决定。您可以将整个游戏缩放到框架,或者只是扩展背景。但是,根据您想要前进的方向,您必须做不同的事情。

    最终这个决定完全取决于你。

    还有你用什么来创建窗口的?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多