Libgdx如何使用图片填充全屏?

4
我是Libgdx的新手,遇到了一些问题,无法将图像填充到整个屏幕。如果导入一个1900x1200的图像,它会填满整个屏幕,但如果使用1024x512的图像,则图像不会被拉伸到屏幕上。以下是我使用的代码。我认为“background.setSize(stageWidth,stageHeight)”会将图像缩放到屏幕大小,但实际上并没有发生。请告诉我我做错了什么?我已经尝试过使用“setFillParent”(如另一篇帖子中所提到的),但仍然没有效果。这里还包括一个当前显示内容的截图(在桌面实现和Android上均如此):http://tinypic.com/r/b7j20z/8 谢谢您的帮助!
package com.mygdx.game;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.actions.MoveToAction;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.StretchViewport;
import com.badlogic.gdx.utils.viewport.Viewport;

public class MyGdxGame implements ApplicationListener{      

    private Stage stage;

    @Override
    public void create() {        
        stage = new Stage();

        float stageHeight = Gdx.graphics.getHeight();
        float stageWidth = Gdx.graphics.getWidth();

        // Background
        Texture board = new Texture(Gdx.files.internal("data/frame.png"));
        Image background = new Image(board);
        background.setOrigin(0, 0);
        background.setSize(stageWidth, stageHeight);
        background.rotateBy(0);
        background.setPosition(0, 0);
        stage.addActor(background);

    }

    @Override
    public void dispose() {
        stage.dispose();
    }

    @Override
    public void render() {       
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();
    }

    @Override
    public void resize(int width, int height) {
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }

}

你是为舞台还是为图像切换setFillParent - kabb
我为图片切换了它。 - jav
1个回答

7
经过一番思考,你问题的最可能原因是直接将图片添加到了舞台的根节点上。舞台的根节点是一个不处理任何布局管理的组,这可能导致你的图片大小不正确。我建议你创建一个表格(Table),然后使用setFillParent()方法使其占据整个屏幕。然后,你可以使用表格的内置函数table.background(drawable)来设置背景。但是,你必须记住一个Texture并不算作表格中的可绘制对象,因此你必须使用TextureRegionDrawable类来获取有效的背景可绘制对象。下面是一个示例:
table.background(new TextureRegionDrawable(new TextureRegion(board)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接