我对 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 帧将绘制一张新卡。您可以根据自己的喜好弄乱该数字。如果您需要进一步的内容,请发表评论。