- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先我知道这个主题已经有很多主题,但我仍然什么也不明白。
我正在尝试制作 Android 游戏(可在 Play 商店下载),但每次都会遇到一个问题,我怎样才能制作一款可以在所有具有相同宽高比的手机上玩的游戏?
例如:我想做一个游戏,其中一些物体从屏幕顶部随机落到玩家的角色上。
如何在每部手机上打印相同外观的背景图像、玩家图像和下落物体图像?
首先我想打印背景图像这是我目前拥有的:
public class MyAwesomeGame extends Game {
public SpriteBatch batch;
@Override
public void create () {
batch = new SpriteBatch();
setScreen(new MenuScreen(this));
}
@Override
public void render () {
super.render();
}
@Override
public void dispose () {
batch.dispose();
}
}
还有:
public class MenuScreen implements Screen {
private MyAwesomeGame game;
public MenuScreen(MyAwesomeGame game){
this.game = game;
}
@Override
public void show() {}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
game.batch.begin();
game.batch.end();
}
@Override
public void resize(int width, int height) {}
@Override
public void pause() {}
@Override
public void resume() {}
@Override
public void hide() {}
@Override
public void dispose() {}
}
请有人向我解释一下我应该做什么或给我一些代码吗?
最佳答案
viewport实际上就是你所需要的。如果您希望每个设备的图像具有相同的宽高比,您可以使用 StretchViewport
这将根据设备的宽高比自动缩小/放大图像,但会降低图像质量。
如果您不想破坏图像质量,请使用 FillViewport,它还可以保留虚拟屏幕尺寸的纵横比,但与 FitViewport 相比,它始终会填充整个屏幕,这可能会导致部分屏幕视口(viewport)被切断。
如果您希望背景图像占据整个屏幕,请执行以下操作:
int width = Gdx.graphics.getWidth(); \\ get the width of the device
int height = Gdx.graphics.getHeight(); \\ get the height of the device
Texture backgroundImage = new Texture(pathName);
Image image = new Image(backgroundImage);
image.setSize(width,height); \\ background image will fill up your whole screen
Image player = new Image(new Texture(pathname)); \\ it's the same as what we did above
Stage stage = new Stage(new StretchViewport(width,height));
stage.addActor(player); \\ add your player and background image to stage
stage.addActor(image);
点击这个link有关舞台
的更多信息StretchViewport
中的两个参数将根据设备的宽高比拉伸(stretch)宽度和高度。
现在在您的渲染方法上更新并渲染您的图像。
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
希望对您有所帮助!
关于java - Android 的宽高比和视口(viewport) : Need an explication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42373779/
我将我的用户图片作为文件保存在我的硬盘上。(不在数据库中)。 我将获取此 *.jpg 文件的高度和宽度,该怎么做? (背景:我必须计算高度和宽度之间的比率以使其达到指定的高度和宽度而不拉伸(stret
我是一名优秀的程序员,十分优秀!