1

我正在开发一个简单的游戏。for我希望在单击按钮时执行的循环的每个交互中都有一小段等待。

我曾尝试使用Thread.sleep(2000),但无济于事。

这是按钮单击的代码:

public void playClick(View v) {
        String item;
        try{
            final Handler handler = new Handler();
        for (int i = 0; i < stringList.size(); i++) {

             Thread.sleep(2000);
            item = stringList.get(i);

            if(item.equals("left")){

                leftclick();

            }else if(item.equals("right")){

                rightClick();

            }else if(item.equals("up")){

                upClick();

            }else if(item.equals("down")){

                downClick();

            }
        }
        }catch(Exception e){
            Toast.makeText(this, ""+e.toString(), Toast.LENGTH_SHORT).show();
        }

我想在每次执行for循环时等待。

4

2 回答 2

6

不建议阻塞主线程,相反我建议创建一个 Runnable 并将其传递给您现有的、未使用的 Handler。也许:

private final Handler handler = new Handler();
private final Runnable runnable = new Runnable() {
    @Override
    public void run() {
        for (String item : stringList) {
            if(item.equals("left")){
                leftclick();
            }else if(item.equals("right")){
                rightClick();
            }else if(item.equals("up")){
                upClick();
            }else if(item.equals("down")){
                downClick();
            }
        }
    }
}

...

public void playClick(View v) {
    // Execute the code inside runnable in 2 seconds
    handler.postDelayed(runnable, 2000);
}
于 2013-03-05T19:54:49.260 回答
0

@Sam 解决方案的替代方法是使用 javax.swing。定时器

于 2013-03-05T20:10:22.857 回答