libGdx 每五秒触发一次
fire in every five seconds with libGdx
如何使用 libGdx 每五秒调用一次 fire 方法?
这是我的敌人class :
我写了下面的代码,但是写错了
public class Enemy {
private List<Bullet> bullets;
private boolean isFire;
public Enemy(){
bullets=new ArrayList<Bullet>();
}
public void update(float delta) {
Gdx.app.log("State", "State Fire");
if(!isFire){
Gdx.app.log("State", "Fire");
fire();
}else{
Gdx.app.log("State", "No Fire");
}
}
private void fire() {
isFire=true;
bullets.add(new Bullet(5, 32));
Timer.schedule(new Task(){
@Override
public void run() {
reload();
}
}, getDelay());
}
private void reload(){
isFire=false;
}
private int getDelay() {
return 5;
}
public List<Bullet> getBullets(){
return bullets;
}
}
有没有办法解决这个问题?我不知道
我可以想到两个解决方案:
1) 渲染方法每 X 毫秒执行一次。你可以用那个。
__UPDATE__
下面的代码是from here
void render(float delta)
Called when the screen should render itself.
Parameters:
delta - The time in seconds since the last render.
在该方法中,您可以添加增量以计算自上次执行您想执行的操作以来是否已经过了 X 毫秒。如果是这样,你可以再做一次。如果不只是增加你的计数器。这就是我的意思。
double counter = 0;
void render(float delta){
if (counter >= 5.0){
counter = 0.0;
fireUpYourTimelyProcessHere();
} else {
counter = counter + delta;
}
...
// other rendering stuff
}
但是不要在这里做需要很长时间才能完成的事情,比如发出HTTP请求什么的。
}
2) 或者你可以创建一个常规线程并启动它。但请记住避免在该线程上进行任何 UI 渲染。
如何使用 libGdx 每五秒调用一次 fire 方法?
这是我的敌人class :
我写了下面的代码,但是写错了
public class Enemy {
private List<Bullet> bullets;
private boolean isFire;
public Enemy(){
bullets=new ArrayList<Bullet>();
}
public void update(float delta) {
Gdx.app.log("State", "State Fire");
if(!isFire){
Gdx.app.log("State", "Fire");
fire();
}else{
Gdx.app.log("State", "No Fire");
}
}
private void fire() {
isFire=true;
bullets.add(new Bullet(5, 32));
Timer.schedule(new Task(){
@Override
public void run() {
reload();
}
}, getDelay());
}
private void reload(){
isFire=false;
}
private int getDelay() {
return 5;
}
public List<Bullet> getBullets(){
return bullets;
}
}
有没有办法解决这个问题?我不知道
我可以想到两个解决方案:
1) 渲染方法每 X 毫秒执行一次。你可以用那个。
__UPDATE__
下面的代码是from here
void render(float delta)
Called when the screen should render itself.
Parameters:
delta - The time in seconds since the last render.
在该方法中,您可以添加增量以计算自上次执行您想执行的操作以来是否已经过了 X 毫秒。如果是这样,你可以再做一次。如果不只是增加你的计数器。这就是我的意思。
double counter = 0;
void render(float delta){
if (counter >= 5.0){
counter = 0.0;
fireUpYourTimelyProcessHere();
} else {
counter = counter + delta;
}
...
// other rendering stuff
}
但是不要在这里做需要很长时间才能完成的事情,比如发出HTTP请求什么的。 }
2) 或者你可以创建一个常规线程并启动它。但请记住避免在该线程上进行任何 UI 渲染。