Beiträge von steusi

    Danke antifish,


    ich verstehe - macht natürlich Sinn. Wenn es so läuft, würde mich eins noch brennend interessieren. Kann man in einem Thread auch auf ein View-Element zugreifen um zu prüfen, ob ein Button geklickt wurde als Beispiel?


    Muss ich eine Thread-Klasse erstellen, welche vom Thread erbt und dann überschreibe ich die run-Methode um ein View-Element zu übergeben oder gibt es einen Trick?

    Hallo block_,
    eine richtige Fehlermeldung bekomme ich leider nicht :( Es steht nur da, das der Prozess beendet wird.


    meine Kreis-Klasse sieht wie folgt aus:


    Im Spiel wird der Kreis wie folgt erstellt:

    Java
    gameCircle = new Circle(this,
    								display.getWidth(),
    								display.getHeight(),
    								Circle.getColor());


    Nun möchte ich gern im Thread die Farbe wechseln:

    Java
    gameCircle.chanceColor(Circle.getColor());
    gameCircle.refreshDrawableState();


    getColor sollte natürlich nicht von außen aufrufbar sein, sondern nur private in der Kreis-Klasse selbst!

    Oh nein, Button und Kreis befinden sich natürlich in einer Activity.
    Die Fehler entstehen bei der 1. Zeile, nehme ich diese weg bei der 2. Zeile im Folgenden:

    Java
    gameField.removeAllViews();
    gameField.addView(gameCircle);


    Wie zeichnet man etwas neu? .repaint() oder .refresh() existiert leider nicht. Gern würde ich daher das FrameLayout neu zeichnen, was ich nur angelegt habe, damit der Kreis einem kleinen Bereich zugeordnet ist.
    Der Kreis ist ein Canvas-Objekt. Ich ändere beim Kreis die Eigenschaft der Farbe, doch da dieser bereits gezeichnet ist sieht man dies natürlich nicht. Da der Kreis dem FrameLayout zugeordnet ist, würde ein neues zeichnen des Kreises dazu führen, dass alles korrekt ist.


    Mein Versuch war nun alle Views innerhalb des FrameLayout zu löschen und wieder diesen neuen View (den Canvas-Kreis) hinzuzufügen.


    //edit:
    Mir ist gerade eingefallen, dass ich das Canvas-Objekt je refreshen kann:

    Java
    gameCircle.refreshDrawableState();
    gameCircle.invalidate();


    Leider stützt das Programm bei invalidate() ab :(
    Wie macht man es richtig?

    Danke für den Hinweis, ich habe es mir ja fast gedacht. Leider klappt der Versuch nicht, die Anwendung bricht mit einem Fehler ab.
    Ich habe in einer Subactivity einen Kreis, beim Klick auf einen Button soll dieser anfangen die Farbe zu wechseln.


    An dieser Stelle etwas Quellcode:


    Nachdem der Button geklickt wurde, soll der Thread gestartet werden, sobald es dazu kommt, stürzt das Programm sofort ab.
    Führe ich es nicht parallel aus, also wie folgt klappt alles:


    Kann mir jemand meinen Fehler beschreiben?
    Ich habe das Gefühl der Thread startet in der falschen Activity (im Menü vor dieser game-Activity), sprich er ist gar nicht am richtigen Ort, aber dies kann ja nicht sein oder?

    Hallo Leute,


    ich würde gerne einen Kreis erstellen, welcher ständig die Farbe wechselt. Solange bis ein Button geklickt wird.
    Die Erstellung eines Kreises ist kein Problem, der Farbwechsel an sich auch nicht - nur wird dies nicht angezeigt, wenn ich es beispielsweise in eine Schleife packe und laufen lassen.


    In meinem Kopf habe ich eine "Endlosschleife" welche die Farbe des Kreises ändert und der Benutzer dies auch sieht. Sobald er den Button drückt, hört diese "Endlosschleife" auf zu laufen. Wie kann man soetwas realisieren?
    Mir ist gerade die Idee von Threads gekommen, dazu habe ich leider noch kein Wissen. Ist dies der richtige Weg?


    Ich hoffe jemand hat einen guten Tipp für mich :)


    Danke