如何延迟此for循环

时间:2019-10-10 06:38:40

标签: java android

我正在从事坦克游戏,为此,我想在屏幕上显示镜头。镜头应该每秒在孔洞上移动,并且应该从一侧到另一侧平滑移动,但是只是从一侧冲向另一侧。我在for循环中进行了20次,如果要停止1秒钟,则要停止,但是如果单击“射击”按钮,textView消失,并在20秒钟后显示在另一侧。 我如何才能延迟此循环并逐步将textView移到看起来像镜头的整个屏幕上?我已经尝试过线程,可运行和倒数计时而没有成功。

这是我的拍摄功能

public void shot(final int power, float winkel, Button button) {
    if (winkel > 90) {
        winkel = winkel - 10;
    } else if (winkel < 90) {
        winkel = winkel + 10;
    }

    final Handler handler = new Handler();
    final float finalWinkel = winkel;
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            for (double i = 0; i < 20; i = i + 1) {
                TextView textView = new TextView(context);
                textView.setText(".");
                double x = tanks.get(currentTank).getxPos() + (i * power * Math.cos(finalWinkel * (Math.PI / 180)));
                double y = tanks.get(currentTank).getyPos() + (-1 * (i * power * Math.sin(finalWinkel * (Math.PI / 180))));
                double gravity = (-1 * ((9.81 / 2) * Math.pow(i, 2)));
                y = (y - gravity);
                System.out.println(x + "/" + y);
                textView.setX((float) x);
                textView.setY((float) y);
                textView.setTextSize(50);
                layout.addView(textView);

                if (textView.getY() >= 400 && i > 2) {
                    System.out.println("BOOOOOOOM");
                    displayExplosion(textView.getX(), textView.getY());
                    break;
                }

                for (int j = 0; j < tanks.size(); j++) {
                    if (textView.getX() > tanks.get(j).getxPos() && textView.getX() < tanks.get(j).getxPos() + 100) {
                        if (textView.getY() > tanks.get(j).getyPos() && textView.getY() < tanks.get(j).getyPos() + 100) {

                            float k = tanks.get(j).getxPos() - textView.getX();
                            if (k < 0) {
                                k = k * -1;
                            }
                            makeDamage(k, tanks.get(j));
                            displayExplosion(textView.getX(), textView.getY());
                        }
                    }
                }
                layout.removeView(textView);
                handler.postDelayed(this, 1000);
            }
        }
    }, 1000);
}

0 个答案:

没有答案
相关问题