我正在尝试创建一个游戏,敌人会随机产生并朝屏幕上的某个点移动。我的问题是程序等待它们生成并开始移动它们。我希望它们在产卵时开始运动,并在它们之间短暂休息。
这是使它们移动的两个主要方法:
public void newLevel() {
runOnUiThread(new Runnable(){
public void run() {
int i = 0;
while( i < 10){
addSpeks();
i++;
try {
Thread.sleep(2000);
}
catch(InterruptedException ie){
ie.printStackTrace();
}
}
}
});
}
public void addSpeks() {
Spek newSpek = new Spek(this);
setRandomRegion();
newSpek.setX(spawnX);
newSpek.setY(spawnY);
relativeLayout.addView(newSpek);
spekList.add(newSpek);
newSpek.setOnClickListener(spekListener);
newSpek.animate().x(finalX).y(finalY).setDuration(8000);
}
Spek是一个简单的类,它扩展了ImageView,并且setRandomRegion()选择屏幕边框上的随机x,y坐标。为了简化起见,我在while循环中有一个计数器,但我希望最终将其移至条件无限循环,该循环仅在您输掉游戏后才停止。
感谢您的帮助,如果问题需要进一步澄清,请与我联系。
最佳答案
完成后,您将不得不重新运行线程,在Android中可以这样完成:
首先,创建您的Runnable
:
private Runnable SpawnEnemies = new Runnable(){
public void run(){
//Your code here...
spawnHandler.postDelayed(2000, this);
}
};
然后,创建一个处理程序,该处理程序将是运行线程(或者说是可运行的)的类,并像下面这样启动您的
Runnable
:Handler spawnHandler = new Handler();
spawnHandler.post(new SpawnEnemies());
这将每2秒运行一次,您还可以添加一个布尔值或类似符号以手动停止循环。
关于java - 如何定期产生敌人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26860831/