Java 用libGdx每五秒钟开火一次
如何使用libGdx每五秒钟调用一次fire方法 这是我的敌人阶级: 我写了下面的代码,但它是错误的Java 用libGdx每五秒钟开火一次,java,android,libgdx,Java,Android,Libgdx,如何使用libGdx每五秒钟调用一次fire方法 这是我的敌人阶级: 我写了下面的代码,但它是错误的 public class Enemy { private List<Bullet> bullets; private boolean isFire; public Enemy(){ bullets=new ArrayList<Bullet>(); } public void update(float delta)
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;
}
}
公敌{
私人清单子弹;
私人火灾;
公敌(){
项目符号=新的ArrayList();
}
公共无效更新(浮动增量){
Gdx.app.log(“州”、“州火灾”);
如果(!isFire){
Gdx.app.log(“状态”、“火灾”);
火();
}否则{
Gdx.app.log(“状态”,“无火灾”);
}
}
私人空间火灾(){
isFire=真;
添加(新的项目符号(5,32));
Timer.schedule(新任务(){
@凌驾
公开募捐{
重新加载();
}
},getDelay());
}
私有无效重新加载(){
isFire=false;
}
private int getDelay(){
返回5;
}
公共列表getBullets(){
返回子弹;
}
}
有办法解决这个问题吗?我不知道我可以想出两种解决方案: 1) render方法每X毫秒执行一次。你可以用那个 更新 下面的代码是 在该方法中,您可以添加delta来计算自上次执行任何您想执行的操作以来是否已经过了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渲染 请进一步解释解决方案1
double counter = 0;
void render(float delta){
if (counter >= 5.0){
counter = 0.0;
fireUpYourTimelyProcessHere();
} else {
counter = counter + delta;
}
...
// other rendering stuff
}