Android 如何在Libgdx中设置屏幕的宽度和高度?
对不起,我不能清楚地描述我的问题。我重新描述它:Android 如何在Libgdx中设置屏幕的宽度和高度?,android,screen,libgdx,Android,Screen,Libgdx,对不起,我不能清楚地描述我的问题。我重新描述它: 我正在用libgdx制作一个android游戏,现在我完成了一个演示: 它只有一个游戏视图,由GameScreen类实现,GameScreen类是libgdx中Screen的一个子类: public class LaohuGame extends Game { public static final int FRUIT_NUM = 24; public static final String WORK_DIR = "Desktop/asset
public class LaohuGame extends Game {
public static final int FRUIT_NUM = 24;
public static final String WORK_DIR = "Desktop/assets/";
@Override
public void create() {
GameScreen gameScreen = new GameScreen(this);
setScreen(gameScreen);
}
public class GameScreen extends LaohuScreen {
private final Stage stage;
public static int START_X = 11;
public static int START_Y = 199;
public GameScreen(Game game) {
super(game);
stage = new Stage(GAME_WIDTH,GAME_HEIGHT,true);
//add actors to the stage
}
public class LaohuScreen implements Screen{
int GAME_WIDTH;
int GAME_HEIGHT;
protected Game game;
public LaohuScreen(Game game) {
this.game = game;
GAME_WIDTH = Gdx.graphics.getWidth();
GAME_HEIGHT = Gdx.graphics.getHeight();
}
游戏宽度、游戏高度等于手机屏幕的宽度、高度,因此游戏视图会填满整个手机屏幕
Screen
子类实现。我认为完成的游戏应该是这样的图片:resize(int-width,int-height)
方法来降低屏幕的高度,为按钮栏留下空白,但不起作用任何建议都将不胜感激。所有libgdx事物都假定宽度和高度始终等于“窗口”大小。在桌面计算机上,这可能小于整个屏幕大小,但仍将填充整个渲染区域。在手机上,它很可能始终是手机的显示大小 将其设置为较小的值对您没有帮助,因为它不会仅使用渲染区域的一部分。相反,你会得到奇怪的拉伸结果 不要更改从resize方法获得的值。取而代之的是使用第一个解决方案,渲染游戏屏幕底部的按钮
这里不需要复制任何代码。实现类似于“ButtonBarGUI”的东西,它使用一个Stage和scene2d.ui东西在屏幕底部呈现四个按钮,然后只需重用这个助手类就可以通过Stage.draw()在任何屏幕上呈现按钮栏.嘿,如果你能与我们分享你尝试做的事情或你的成就,那将是非常好的。你可能想包括一些代码来展示你迄今为止的成就。您还应该指出代码中的哪一点被卡住了。我假设您使用的是Java,但如果不是,那么您应该说明这一点。您可能还需要解释一下“游戏视图”和“屏幕”的概念,并告诉我们您使用的是哪种开发环境。@Mark我重新编辑了我的帖子,您能再看一下吗?提前谢谢@我重新编辑了我的帖子,你能再看一次吗?提前谢谢!我不是Java方面的专家,但我认为您已经增加了获得答案的机会。没有照片;它们显示为文件路径。感谢您的回答!第一种解决方案是实现我的游戏的唯一方法吗?@user2692131我很确定这至少是一种方法。可能会有一些奇怪的黑客将屏幕渲染区域分成两部分,包括复制帧缓冲区等,但这会导致很多问题。我描述它的方式是有效的,其他人也这样做过。
public class LaohuGame extends Game {
public static final int FRUIT_NUM = 24;
public static final String WORK_DIR = "Desktop/assets/";
@Override
public void create() {
GameScreen gameScreen = new GameScreen(this);
setScreen(gameScreen);
}
@Override
public void setScreen(Screen screen) {
super.setScreen(screen);
this.getScreen().resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() * 5 / 10);
}
@Override
public void resize(int width, int height) {
if (getScreen() != null) getScreen().resize(width, height * 5 / 10);
}
}