我正在尝试创建一个游戏,敌人会随机产生并朝屏幕上的某个点移动。我的问题是程序等待它们生成并开始移动它们。我希望它们在产卵时开始运动,并在它们之间短暂休息。

这是使它们移动的两个主要方法:

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/

10-11 22:15
查看更多