Java 安装视口黑条

Java 安装视口黑条,java,android,libgdx,Java,Android,Libgdx,我目前正在开发一个游戏,你必须避免小行星。为了使游戏在每台设备上看起来都一样,我使用了FitViewport。不幸的是,我不知怎的在顶部和底部得到了白色的条,而不是黑色的条。我的游戏背景也是白色的,所以看起来有点怪 游戏屏幕: @Override public void create() { float aspectRatio = (float)Gdx.graphics.getWidth() / (float)Gdx.graphics.getHei

我目前正在开发一个游戏,你必须避免小行星。为了使游戏在每台设备上看起来都一样,我使用了FitViewport。不幸的是,我不知怎的在顶部和底部得到了白色的条,而不是黑色的条。我的游戏背景也是白色的,所以看起来有点怪

游戏屏幕:

     @Override
     public void create() 
     {
        float aspectRatio = (float)Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight();
        cam = new OrthographicCamera();
        viewport = new FitViewport(MyGdxGame.WIDTH * aspectRatio, MyGdxGame.HEIGHT, cam);
        [...]
     }


     @Override
     public void render(SpriteBatch batch) 
     {
        cam.update();
        batch.setProjectionMatrix(cam.combined);
        batch.begin();
        em.render(batch); //render Ship and Asteroids
        [...]
     }


     @Override
     public void resize(int width, int height) 
     {
        viewport.update(width, height);
        cam.position.set(MyGdxGame.WIDTH / 2, MyGdxGame.HEIGHT /2, 0);
     }


我把船拖到了白色的栏中。

LibGDX提供了一种更方便的方式来处理不同的纵横比。您不必将MyGdxGame.WIDTH与aspectRatio相乘。只需使用MyGdxGame.WIDTH和MyGdxGame.HEIGHT初始化它

此外,在“调整大小”功能中,可以使用视口值(而不是常数)更改cam位置:


LibGDX提供了一种更方便的方式来处理不同的纵横比。您不必将MyGdxGame.WIDTH与aspectRatio相乘。只需使用MyGdxGame.WIDTH和MyGdxGame.HEIGHT初始化它

此外,在“调整大小”功能中,可以使用视口值(而不是常数)更改cam位置:


我在你的代码中发现了一些问题。要获得处理不同屏幕比例时的最佳实践,请尝试使用“填充”视口。这里只是使用“填充”视口编辑代码。试试看

         @Override
         public void create() 
         {
            float aspectRatio = (float)Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight();


            camera = new OrthographicCamera();
            camera.position.set(0, 0, 0);
            camera.update();
            //1280 is the screen width and 800 is screen height
            camera.setToOrtho(false, 1280, 800);
            viewPort = new FillViewport(1280, 800, camera);

         }


         @Override
         public void render(SpriteBatch batch) 
         {

            batch.setProjectionMatrix(camera.combined);
            batch.begin();
            em.render(batch); //render Ship and Asteroids
            [...]
         }


         @Override
         public void resize(int width, int height) 
         {
           viewPort.update(width, height);
         }

 just try with the above code . it will definitely work

我在你的代码中发现了一些问题。要获得处理不同屏幕比例时的最佳实践,请尝试使用“填充”视口。这里只是使用“填充”视口编辑代码。试试看

         @Override
         public void create() 
         {
            float aspectRatio = (float)Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight();


            camera = new OrthographicCamera();
            camera.position.set(0, 0, 0);
            camera.update();
            //1280 is the screen width and 800 is screen height
            camera.setToOrtho(false, 1280, 800);
            viewPort = new FillViewport(1280, 800, camera);

         }


         @Override
         public void render(SpriteBatch batch) 
         {

            batch.setProjectionMatrix(camera.combined);
            batch.begin();
            em.render(batch); //render Ship and Asteroids
            [...]
         }


         @Override
         public void resize(int width, int height) 
         {
           viewPort.update(width, height);
         }

 just try with the above code . it will definitely work

如果尚未添加这些行,请尝试在
cam.update()
之前添加这些行:
Gdx.gl.glClearColor(0f,0f,0f,1f)
Gdx.gl.glClear(GL20.gl\u COLOR\u BUFFER\u BIT)
不幸的是,这两行的孔背景是黑色的。我想如果我想创造效果,我必须使用白色纹理作为背景-感谢您尝试在
cam.update()
之前添加这些行,如果您还没有:
Gdx.gl.glClearColor(0f,0f,0f,1f)
Gdx.gl.glClear(GL20.gl\u COLOR\u BUFFER\u BIT)
不幸的是,这两行的孔背景是黑色的。我想如果我想创造效果,我必须使用白色纹理作为背景-谢谢-