Ich mache ein Spiel, wo, wenn der Spieler mit Bär schneidet, wird es den runnable Thread stoppen. aber irgendwie wird es überhaupt nicht aufhören. Wenn der Spieler den Bären schneidet, sollte der Spieler tot sein. Der Dead Loop wird aufgerufen, aber das Runnable wird nicht gestoppt. Ich habe die runnable Schleife wie untenRunnable wont stop
protected void movement() {
final int delay = 5;
speed = 20;
r = new Runnable() {
@Override
public void run() {
if (countscore % 300 == 0) {
speed = speed + 5;
}
bear1.setY(bear1.getY() + speed);
bear2.setY(bear2.getY() + speed);
reframeroad();
if ((animImageView.getX() < bear1.getX() + 50 && animImageView.getX() > bear1.getX() - 50) ||
(animImageView.getX() > bear2.getX() && animImageView.getX() < bear2.getX())) {
System.out.println("goes inside getx intersects x ");
dead();
}
if (Rect.intersects(thiefRect, bear1Rect) || Rect.intersects(thiefRect, bear2Rect)) {
System.out.println(" goes inside intersects if loop ");
dead(); // this gets called
}
h.postDelayed(this, delay);
}
}; h.postDelayed(r, speed);
}
public void dead(){
System.out.println("before callbacks null");
h.removeCallbacksAndMessages(r);
System.out.println("goes inside dead function");
bear1.setVisibility(View.INVISIBLE);
bear2.setVisibility(View.INVISIBLE);
animImageView.setVisibility(View.INVISIBLE);
scorebox.setText(countscore + "");
scorebox.setVisibility(View.VISIBLE);
score.setVisibility(View.VISIBLE);
retry.setVisibility(View.VISIBLE);
retry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(GameActivity.this, GameActivity.class));
finish();
}
});
}
habe ich versucht, eine Menge, aber ich werde immer noch auf alle 5ms zurückrufen.
Meine Konsole Schleifen wie jedes dieser Zeit
> 04-19 10:36:40.687 14923-14923/: goes inside getx intersects x
> 04-19 10:36:40.687 14923-14923/: before callbacks null
> 04-19 10:36:40.687 14923-14923/: goes inside dead function
> 04-19 10:36:40.747 14923-14923/: goes inside getx intersects x
> 04-19 10:36:40.747 14923-14923/: before callbacks null
> 04-19 10:36:40.747 14923-14923/:goes inside dead function
> 04-19 10:36:40.807 14923-14923/: goes inside getx intersects x
> 04-19 10:36:40.807 14923-14923/: before callbacks null
> 04-19 10:36:40.807 14923-14923/: goes inside dead function
> 04-19 10:36:40.868 14923-14923/: goes inside getx intersects x
> 04-19 10:36:40.869 14923-14923/: before callbacks null
> 04-19 10:36:40.869 14923-14923/: goes inside dead function
auch die meine Gäste nach der toten Funktion auf der Erhöhung halten
scorebox.setText(countscore + "");
genannt Wie kann ich den ausführbaren Thread stoppen?
wo sind Sie '.start()' das neue runnable? es könnte sein, dass Sie es über den Hauptthread als regulären Funktionsaufruf –
ausführen, sobald meine Aktivität startet, startet Runnable. . nie gemacht .start() – Pujan
@Gilad - die Runnable wird durch den Handler gestartet ..... – Opiatefuchs