【问题标题】:Libgdx Filling Screen With ImageLibgdx 用图像填充屏幕
【发布时间】:2014-05-25 20:20:29
【问题描述】:

我是 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 是为了舞台,还是为了图像?
  • 我为图片切换了它。

标签: java android libgdx


【解决方案1】:

经过一番思考,问题的最可能原因是您将图像直接添加到舞台的根目录。舞台的根是一个不处理任何布局管理的组,这可能是您的图像大小不正确的原因。

我建议您创建一个Table,然后使用setFillParent(),这样它就会占据整个屏幕。然后,您可以简单地使用表格的内置函数table.background(drawable) 来设置背景。但是,您必须记住 Texture 不能算作表格的可绘制对象,因此您必须使用 TextureRegionDrawable 类来获取有效的背景可绘制对象。这是一个例子:

table.background(new TextureRegionDrawable(new TextureRegion(board)));

【讨论】:

    猜你喜欢
    • 2012-11-21
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多