java - 如何在嵌套 switch 语句中显示图像?

标签 java libgdx perlin-noise

我目前正在尝试制作一款涉及随机生成世界的游戏。我目前有一个工作启动屏幕和一个工作柏林噪音生成器,并且已标准化。我所需要的只是一种实现显示图像的代码的方法。

代码:

public void show() {
    batch = new SpriteBatch();
    World world = new World();


    int type = 0;

    for (int y = 1; y < world.getlengthy();y++){
        for (int x = 1; x < world.getlengthx();x++){
        type = world.getvalue(x, y);


        switch (type) {
            case 1:sprite = new Sprite(tex1,0,0,16,16);sprite.setPosition(x, y);batch.begin();sprite.draw(batch);batch.end();
            Gdx.app.log("", "x: " + x + " y: " + y);
            break;
            case 2:batch.begin();batch.draw(tex2, x, y);batch.end();
            break;
            case 3:batch.begin();batch.draw(tex3, x, y);batch.end();
            break;
            case 4:batch.begin();batch.draw(tex4, x, y);batch.end();
            break;
            case 5:batch.begin();batch.draw(tex5, x, y);batch.end();
            break;
            case 6:batch.begin();batch.draw(tex6, x, y);batch.end();
            break;
            case 7:batch.begin();batch.draw(tex7, x, y);batch.end();
            break;
            case 8:batch.begin();batch.draw(tex8, x, y);batch.end();
            break;
            }
        }

最佳答案

您的代码需要位于 render 方法内部。如果屏幕第一次显示,则仅调用该节目。 (1 次调用!)因此,将 for 循环放入渲染周期内,它应该可以工作。

只是一个小提示。不要在渲染周期内创建对象 sprite = new Sprite(tex1,0,0,16,16);。始终在 show 方法中或构造函数内部初始化所有对象以节省渲染时间。(它确实会在帧速率方面产生很大差异)

也只需在循环之前使用 begin() 一次,在循环之后使用 end() 一次。

例如这样的事情。我仍然不会在渲染中创建 Sprite ,但我不知道你的其余逻辑。希望这可以帮助!问候

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


@Override
public void render(float delta){
    int type = 0;
    batch.begin();
    for (int y = 1; y < world.getlengthy();y++){
        for (int x = 1; x < world.getlengthx();x++){
        type = world.getvalue(x, y);


        switch (type) {
            case 1:
                sprite = new Sprite(tex1,0,0,16,16);
                sprite.setPosition(x, y);
                sprite.draw(batch);
                Gdx.app.log("", "x: " + x + " y: " + y);
            break;
            case 2:
                batch.draw(tex2, x, y);
            break;
            case 3:
                batch.draw(tex3, x, y);
            break;
            case 4:
                batch.draw(tex4, x, y);
            break;
            case 5:
                batch.draw(tex5, x, y);
            break;
            case 6:
                batch.draw(tex6, x, y);
            break;
            case 7:
                batch.draw(tex7, x, y);
            break;
            case 8:
                batch.draw(tex8, x, y);
            break;
            }
        }
        batch.end();
}

关于java - 如何在嵌套 switch 语句中显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451433/

相关文章:

java - Java找不到符号错误

java - 在 JDBC 中使用日历对象

java - Libgdx 错误 clickListener

java - LibGdx-ViewPort 宽度和高度与某些设备不匹配

java - 按钮不旋转 libGDX

directx - 单纯形噪声着色器?

java - SQLite问题: database file is locked

c - 使用 Xlib 生成 Perlin 噪声

python - 如何使用 perlin 噪声 python 制作二维 map

java - Apache POI autoSizeColumn() 不起作用