LibGDX - 如何添加背景图像

时间:2014-08-24 03:30:18

标签: java android libgdx

我刚刚开始学习LibGDX,而且我很慢。我已经看过很多关于如何在游戏中添加背景图像的教程,但是对于像我这样的初学者来说,大多数都已经过时或太难了。以下是我试图让图像显示的内容。

    texture = new Texture(Gdx.files.internal("background.jpg"));
    backgroundTexture = new TextureRegion(texture, 0, 0, 2048, 563)

不幸的是,它没有用。我运行了应用程序,屏幕仍然是黑色和平原。

就像我说的那样,我是新手,所以请尽可能简单地解释。

5 个答案:

答案 0 :(得分:1)

您正在创建纹理,但之后您永远不会使用它。访问here以获取有关如何在屏幕上实际绘制内容的更多信息。如果这是令人困惑的话,我建议在继续使用库之前找到关于java的教程

答案 1 :(得分:1)

您只为texture字段分配了一张图片,然后将其放入TextureRegion字段中。您实际上并没有使用此方法,因为这发生在SpriteBatch.Begin()SpriteBatch.End()

在你的构造函数或create方法中,你应该拥有你所做的:

public void create() {
    //...
    backgroundTexture = new TextureRegion(new Texture("background.jpg"), 0, 0, 2048, 563);
    //Those are weird screen sizes btw (2048/563)
    //...
}

render方法中,您应该拥有以下内容:

public void render() {
    //...
    batch.Begin();
    batch.draw(backgroundTexture, 0, 0);
    //I believe texture region takes the upper left corner as 0,0 and batch.Draw the bottom left.
    //So you might need to do something like this:
    batch.draw(backgroundTexture, 0, Gdx.graphics.getHeight());
    batch.End();
    //...
}

这至少应该为你画画。如果你的摄像机没有指向正确的坐标,那么显然你不会看到它或只是它的一部分。但是,如果你没有摆弄batch.setProjectionMatrix你应该是好的。

Disclamer:我刚刚在文档中提供了一些帮助,因此它可能无法立即生效。

答案 2 :(得分:0)

在渲染方法上绘制

spritebatch.begin();

spritebatch.draw(texture,0,0,width_of _screen,height_of_screen);

spritebatch.end();

答案 3 :(得分:0)

package <<here your package name>>;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;


public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    @Override
    public void create() {
    batch = new SpriteBatch();
    img = new Texture("background.png");//name of your file.type
    
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(1,0,0,1);//the color of the backgrond if your image small than the windows
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();

    
        batch.draw(img,0,0,1000,700);// image,x,y,wight,height

//this one  for getting your image in center if it was icon or small image
        //batch.draw(img,Gdx.graphics.getWidth()/2 - img.getWidth()/2,Gdx.graphics.getHeight()/2 - img.getHeight()/2);
        //batch.draw(batch,text,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2);
        batch.end();
    }
}

答案 4 :(得分:0)

我将使它变得简单: 您所做的是从 background.png 创建了一个名为“texture”的纹理 现在这只是意味着您将纹理加载到内存中。但是你想把它画在屏幕上。所以在你的 show() 方法中创建一个 Spritebatch。 Spritebatch 是一种帮助您在屏幕上绘制内容的工具。

private SpriteBatch batch;

@Override
public void show () {
    batch = new SpriteBatch();
}

然后您必须使用 SpriteBatch 将背景绘制到屏幕上。

 @Override
public void render(float delta) {
    batch.draw(texture, 0, 0, 200, 200);
}          //  texture, X, Y, width, height
               

现在这将在屏幕上为您绘制纹理。但它不会填满你的屏幕。为了填满整个屏幕,我们必须让它和屏幕一样大。 您可以使用

获取屏幕高度
Gdx.graphics.getHeight()

和宽度

Gdx.graphics.getWidth()