gpt4 book ai didi

android - LibGDX:一个有 20 个可以滚动的矩形的屏幕

转载 作者:太空狗 更新时间:2023-10-29 13:21:12 26 4
gpt4 key购买 nike

我需要在 LibGdx 中创建一个包含 20 个垂直矩形的菜单。

矩形的高度是设备的整个高度。

矩形的宽度是一组20.0f

我有:private Stage 阶段; 我打算将其添加到我的 Rectangle 中。

该类称为 LevelSelectScreen 并实现了 Screen。

这是我目前所拥有的:

public class LevelSelectScreen implements Screen {
private Stage stage;

private int stageNumber = 20;

Array<Rectangle> stageRectangles;

ShapeRenderer shapeRenderer;

public LevelSelectScreen(){
stage = new Stage();

stageRectangles = new Array<Rectangle>(stageNumber);
for(int i = 0;i<stageNumber;i++){
stageRectangles.get(i).setWidth(20f);
stageRectangles.get(i).setHeight(Gdx.graphics.getHeight());
stageRectangles.get(i).setPosition(new Vector2(20*i,0));
}

Gdx.graphics.getWidth();
shapeRenderer = new ShapeRenderer();


}

@Override
public void render(float delta) {

Gdx.gl.glClearColor(0.1f, 0.1f, 0.1f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

stage.act(Gdx.graphics.getDeltaTime());
stage.draw();

//shapeRenderer.setProjectionMatrix(camera.combined);

shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);

shapeRenderer.setColor(0, 1, 0, 1);

for(int i = 0;i<stageNumber;i++){
Rectangle r = stageRectangles.get(i);
shapeRenderer.rect(r.x, r.y, r.getWidth(), r.getHeight());

}
shapeRenderer.end();

}

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

}

@Override
public void show() {

}

@Override
public void hide() {

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void dispose() {

}
}

什么都没有出现,我认为我没有正确使用形状渲染器。

如何正确设置可滚动矩形?

编辑

另外,发现this helpful link .

最佳答案

变量类:

private Stage stage;

private int stageNumber = 20;

Array<Rectangle> stageRectangles;

ShapeRenderer shapeRenderer;

//new, for no magic number, but not required

private float w = 20f;
private float h = Gdx.graphics.getHeight();

private float space = 5;
private float xPos = w + space;
private float yPos = 0;

在您的代码中:

public LevelSelectScreen(){
stage = new Stage();


stageRectangles = new Array<Rectangle>(stageNumber);

for(int i = 0; i<stageNumber; i++){

stageRectangles.add(new Rectangle(xPos * i,
yPos,
w,
h));

Gdx.app.log("Rectangle add", ""+i);
}

shapeRenderer = new ShapeRenderer();
}

你说这不起作用或者我理解,但你没有 Nullpointer 或 BoundsException ?无论如何,对您的代码进行一些调整,这就是我所拥有的,这就是您想要的。

enter image description here

PS:当您必须使用监听器、图片等时,使用滚动条和表格不会更舒服,但这只是一个想法,我希望您已经理解了您的意思说

在您的代码中:

for(int i = 0; i<stageNumber; i++){
stageRectangles.get(i).setWidth(20f);
stageRectangles.get(i).setHeight(Gdx.graphics.getHeight());
stageRectangles.get(i).setPosition(new Vector2(25*i,0));
}

.

此时 stageRectangles.get(i).setWidth(20f);大小为0,则数组有初始容量20 个,但为空。

没有得到这样的东西?

IndexOutOfBoundsException: index can't be >= size 0 >= 0

关于android - LibGDX:一个有 20 个可以滚动的矩形的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com