我正在从事坦克游戏,为此,我想在屏幕上显示镜头。镜头应该每秒在孔洞上移动,并且应该从一侧到另一侧平滑移动,但是只是从一侧冲向另一侧。我在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);
}