Java 如何设置图像显示在另一个随机位置的计时器末尾?
我试图使图像在计时器结束时重新出现。我想不出我做错了什么。图像在开始时出现在一个随机点中,但仅此而已。 我需要的是应用程序启动,然后在随机位置显示3个点,每1秒在另一个随机位置显示一次Java 如何设置图像显示在另一个随机位置的计时器末尾?,java,android,random,timer,libgdx,Java,Android,Random,Timer,Libgdx,我试图使图像在计时器结束时重新出现。我想不出我做错了什么。图像在开始时出现在一个随机点中,但仅此而已。 我需要的是应用程序启动,然后在随机位置显示3个点,每1秒在另一个随机位置显示一次 public class Main extends ApplicationAdapter { SpriteBatch batch; Texture blue; Texture red; Texture green; Sprite spriteb; Sprite sp
public class Main extends ApplicationAdapter {
SpriteBatch batch;
Texture blue;
Texture red;
Texture green;
Sprite spriteb;
Sprite spriter;
Sprite spriteg;
int x;
int y;
Random random = new Random();
private float counter;
private int number;
@Override
public void create () {
batch = new SpriteBatch();
blue = new Texture("blue.png");
red = new Texture("red.png");
green = new Texture("green.png");
spriteb = new Sprite(blue);
spriter = new Sprite(red);
spriteg = new Sprite(green);
spriteb.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
spriter.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
spriteg.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
spriteb.draw(batch);
spriter.draw(batch);
spriteg.draw(batch);
batch.end();
}
public void render (float deltaTime) {
counter -= deltaTime;
if (counter <= 0) {
spriteb.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
counter += 1000; // add one second
batch.begin();
spriteb.draw(batch);
batch.end();
}
}
}
public类主扩展应用程序适配器{
喷雾批;
质地蓝;
质地红色;
质地绿色;
雪碧雪碧;
雪碧雪碧;
雪碧雪碧;
int x;
int-y;
随机=新随机();
私人浮动计数器;
私有整数;
@凌驾
公共void创建(){
批次=新的SpriteBatch();
蓝色=新纹理(“blue.png”);
红色=新纹理(“red.png”);
绿色=新纹理(“green.png”);
雪碧=新雪碧(蓝色);
雪碧=新雪碧(红色);
雪碧=新雪碧(绿色);
设置位置(random.nextInt(Gdx.graphics.getWidth()),random.nextInt(Gdx.graphics.getHeight());
设置位置(random.nextInt(Gdx.graphics.getWidth()),random.nextInt(Gdx.graphics.getHeight());
setPosition(random.nextInt(Gdx.graphics.getWidth()),random.nextInt(Gdx.graphics.getHeight());
}
@凌驾
公共无效渲染(){
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
batch.begin();
精神牵引(批量);
喷雾器.抽(批);
喷丝(批);
batch.end();
}
公共无效渲染(浮动增量时间){
计数器-=deltaTime;
如果(counter我试图在这里发挥建设性的作用,但我很难理解在哪里被称为什么
如果我是你的话,我会添加一些描述,比如什么叫做where,或者你写的完整代码
现在直截了当地说
在render()方法中
boolean位置;
计数-=增量;
如果(count不要发明轮子。我认为这个解决方案对你有好处:
Timer.schedule(
new Task(){
@Override
public void run() {
spriteb.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
spriter.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
spriteg.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
}
}, delay, interval);
将此代码放入您的create()中
方法并查看其是否工作。如果某些东西仍然不工作,则编写它。这里有一个建议…将“counter-=deltaTime”从if循环之前移出,并将其作为else子句放入if循环。if语句中的代码是否已完成?不,它好像代码没有任何作用。我可以删除整个块,它没有任何效果你。效果很好。我会使用数组来制作相同的图像副本,以随机点的形式出现在计时器的末尾吗?我想要更多的图像我想要每秒另一个精灵r b和g。抱歉,我不知道怎么说制作3个libgdx数组,制作3个新精灵,改变位置并放在那里。而不是在渲染中hod遍历这些数组并调用sprite.draw
Timer.schedule(
new Task(){
@Override
public void run() {
spriteb.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
spriter.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
spriteg.setPosition(random.nextInt(Gdx.graphics.getWidth()), random.nextInt(Gdx.graphics.getHeight()));
}
}, delay, interval);