Android libgdx大屏幕分辨率
问题描述:
如何支持libgdx(制作算法)以支持多屏幕分辨率?我使用if statments与像参数所做的HTC纹身我的应用程序的工作:Android libgdx大屏幕分辨率
if (Gdx.input.getX()==40) {
什么是好的算法制作上更大的屏幕这项工作? 我试过,但没有任何结果:
publis static int translatex() {
float p = (float)Gdx.graphics.getHeight()*340;
return (int) p*Gdx.input.getX();
}
340是宏达纹身使用我的底数x(我的手机在x分辨率)。 那么.....我怎么才能做出一个支持绝对值大屏幕的功能。我不想改变if语句。
答
这很简单。你基本上建立你的整个计划的原始分辨率,但一切都处理的定位和纹理大小有这样的事情:
private void resize()
{
float x = Gdx.graphics.getWidth();
float y = Gdx.graphics.getHeight();
float changeX = x/assumeX; //being your screen size that you're developing with
float changeY = y/assumeY;
position = new Vector2(position.x * changeX, position.y * changeY);
width = startWidth * changeX;
height = startHeight * changeY;
bounds = new Vector2 (position.x, (Gdx.graphics.getHeight() - position.y) - height);
}
基本上你正在做的是生成的每个对象,并通过一些运行它根据分辨率中x/y值的变化增加/减少。它来自本土越大,它会越大。当检查某个地方或某处时,总是将其编码为您想要的分辨率,但是在显示它之前通过调整大小函数来运行它,或者让它与其余的程序进行交互。
答
看到http://www.java-gaming.org/index.php?topic=25685.0更优雅的解决方案(也请参阅Nate对该解决方案的评论)。
此外,如果您使用scene2d
,请注意当前(libgdx 0.9.6)stage.setViewport
方法应具有此功能,但它并不像预期的那样运行。
更新: setViewPort是固定的,所以这个工作正如所料。
有关实现的示例,请参阅libgdx wiki上的我的StringBuild教程。 – Remm 2011-05-14 21:30:40
什么是startWidth?并且resize函数有2个参数int width,int height,startWidth是宽度吗? – Felix 2011-05-15 08:48:48
在调整大小之前,起始宽度/高度将是原生纹理的大小。新的宽度和高度是相对于changeX和changeY的增加。边界仅仅是一个矢量2,它支持对角的位置,所以你可以很容易地知道对象的边界。 要创建的调用对象 - >获取所有初始值,例如位置,宽度,高度 - >使用resize()函数转换它们 - >将纹理绘制到屏幕上。当你需要知道纹理的基本尺寸,以便你可以正确拉伸它时,我们会在使用textureRegions的情况下保持startHeight和height分开。 – Remm 2011-05-15 15:35:44