Libgdx 随机图像在每一帧都会发生变化



我对 Libgdx 很陌生,当我想显示扑克牌的随机图像时遇到了一个问题。我把我所有的精灵都放在一个数组列表中,并使用array.random来获取一张特定的随机扑克牌,但是,输出将是所有扑克牌图像在每一帧都变化。

黑桃类

public class Spades extends CardTypes{
public Array<Sprite> spades = new Array<Sprite>(3);
public void cards(){
spades.add(ace = new Sprite(new Texture("spades/AS.png")));
spades.add(two = new Sprite(new Texture("spades/2S.png")));
spades.add(three = new Sprite(new Texture("spades/3S.png"))); }

游戏屏幕类

public class GameScreen implements Screen {
Spades spading = new Spades();
private Main game;
//create method
public GameScreen(Main game) {
this.game = game;
spading.cards();
}

@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.graphics.getDeltaTime();
game.getBatch().begin();
game.getBatch().draw(spading.spades.random(),0,0);
game.getBatch().end();
} }

game.getBatch.draw(( 方法会在坐标 (0,0( 处绘制我所有的精灵,每一帧都会发生变化。无论如何,他们都可以解决这个问题。

这就是发生的事情。render方法每帧调用一次。您可以添加计时器,如下所示:

int amountOfFrames = 50;
int counter = amountOfFrames; // start from 50 so a new card is drawn right when the program begins
@Override
public void render(float delta) {
if(counter % amountOfFrames == 0) {
Gdx.gl.glClearColor(1, 0, 0, 1); // screen cleared
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // screen cleared
Gdx.graphics.getDeltaTime();
game.getBatch().begin();
game.getBatch().draw(spading.spades.random(),0,0); // draws a new card
game.getBatch().end();
}
counter++;
}

然后,每 50 帧将绘制一张新卡。您可以根据自己的喜好弄乱该数字。如果您需要进一步的内容,请发表评论。

最新更新