Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FitViewport中的LibGDX背景图像_Java_Android_Libgdx - Fatal编程技术网

Java FitViewport中的LibGDX背景图像

Java FitViewport中的LibGDX背景图像,java,android,libgdx,Java,Android,Libgdx,所以,我正在为即将推出的应用程序使用LibGDX 我使用FitViewport来确保16:9的纵横比。 因此,其他纵横比超过16:9的玩家将在网站上设置黑条 绘制屏幕填充背景图像的最佳方法是什么,该图像还覆盖了黑色条所在的区域? camera = new OrthographicCamera(); viewport = new FitViewport(WIDTH, HEIGHT, camera); viewport.apply(); camera.position

所以,我正在为即将推出的应用程序使用LibGDX

我使用FitViewport来确保16:9的纵横比。 因此,其他纵横比超过16:9的玩家将在网站上设置黑条

绘制屏幕填充背景图像的最佳方法是什么,该图像还覆盖了黑色条所在的区域?

    camera = new OrthographicCamera();
    viewport = new FitViewport(WIDTH, HEIGHT, camera);
    viewport.apply();
    camera.position.set(WIDTH / 2, HEIGHT / 2, 0);
    camera.update();
这就是我当前设置相机/视口的方式

然后我用雪碧棒在上面画东西

Gdx.gl.glClearColor(1, 1, 1, 1);

这就是我目前至少将黑条颜色更改为任何RGB颜色的方式。

在我看来,最好的办法是创建第二个阶段,它自己的
视口
仅用于背景目的。第二个
视口
不应该是填充视口-它将根据我的经验拉伸您的图形。我认为在这种情况下,extendedviewport更好

那么它应该是什么样子:

    Stage stage, backStage;
    FitViewport viewport;
    ExtendViewport backViewport;

    ...

    stage = new Stage(); //this is your normal stage you have now
    stage.setViewport( yourFitViewport ); //here you are assingning fit viewport

    backViewport = new ExtendViewport( screenWidth, screenHeight );

    backStage = new Stage();
    backStage.setViewport( backViewport ); 

    ...
    //now add to backStage your background Image

    backStage.addActor( yourBackground );
现在只需在render方法中处理新阶段

    backStage.act();
    stage.act();

    backStage.draw(); //backStage first - we want it under stage
    stage.draw();
并在更新中更新新的
视口
,或像旧视口一样进行渲染。就这些


阅读有关
视口的更多信息
此处:

无论是纹理还是精灵都不能作为演员添加到舞台上。不过,我仍然可以用ExtendViewport来做,谢谢。是的,但是有了新的图像(纹理);is@m.antkowicz你知道为什么第二个视口不应该是FillViewport吗?@祝你好运-因为fill视口正在拉伸图形,而且不同的显示具有不同的比率,结果可能是悲剧:)