# Bilder nacheinander anzeigen



## MiDniGG (19. Mrz 2008)

Servus,

suche/google gab kein Ergebnis... (Nur so ;-) )

Also ich bin grad dabei mich ein wenig in J2ME einzuarbeiten. Klappt alles wunderbar. Außer, dass ich ned check wie ich Threads am Besten verwende...
Und zwar hab ich en Proggi des nacheinander Bilder anzeigen soll.

Erste Frage dazu. Brauch ich da unbedingt ne Paint-Methode? Also ein einzelnes Bild in die form packen geht aba wenn ich dann eben mit nem Thread arbeiten will geht des ned so wie ich des will.

Und zwar dachte ich ich mach das mal so:


```
Image[] pic = {pic1, pic2, pic3};
			
		for (int i = 0; i < 3; i++){ 
			form.deleteAll();
			form.append(pic[i]);
			display.setCurrent(form);
			try{ 
				Thread.sleep(500); 
		}
		catch(InterruptedException e){}
	}
```

Sprich for-schleife, form leeren, 1. Bild anzeigen, schlafen und von vorne.

Jetzt passiert dabei folgende. Die for-schleife läuft bis zum Schluss durch und dann kommt das letzte Bild. und die anderen werden einfach ignoriert...

Hat bitte jemand ne idee??? 

*Edit:* Das ganze soll passieren, wenn ich aus meiner List "auswahl" den punkt "starten" auswähl. D.H. er ist zum Zeitpunkt des drückens noch auf der "Startseite" und soll dann quasi die neue form laden und dann die ganzen bildchen nacheinander runterrattern...

*Edit2:* Und wenn ich grad dabei bin. Wie kann ich denn beim J2ME die Bildgröße anpassen? Hab zwar mal des getBestImageWidth oder was des war gefunden. aba weiß ned wirklich was ich damit anfangen soll. (Aber bis ne Antwort kommt durchforst ich ma die API ;-) )


----------



## m@nu (19. Mrz 2008)

kenn mich mit den fertigen form-canvases nicht so aus...
hab bis anhin nur selber direkt in einer canvas gezeichnet.

aber grundsätzlich funktioniert sowas immer gleich...

```
Thread t = new Thread(new Runnable() {
  public void run() {
    // dein code von oben
  }
});
```

jetzt einen listener auf deine liste machen, welcher beim auswählen von "starten" den thread startet:

```
t.start();
```

achte bei deinem codesnippet aber darauf, dass wenn das dritte bild angezeigt wurde, dein programm beim nächsten schleifendurchlauf abstürzt. da musst du noch sowas am ende des loops einbauen:

```
if(i >= 2) i = 0;
```


----------



## MiDniGG (19. Mrz 2008)

Hey. Vielen Dank. Es läuft. 

Hast noch ne Idee zu meim Edit2?? Wegen der Bildgröße anpassen?


----------



## m@nu (19. Mrz 2008)

ach ja klar, das war ja auch noch 
ich empfehle dir keine grossen änderungen an bildern vorzunehmen in J2ME. schon auf dem desktop-java gehört das zu den rechenintensiveren vorgängen (vorallem wenn man eine einigermassen anständige qualität haben möchte).

lieferst du die bilder selber mit dem programm mit, würde ich die dateien bereits im entsprechenden format liefern.
musst du aber unbedingt änderungen an der bildgrösse vornehmen, leifert google einige gute beispiele:
:arrow: http://www.google.com/search?hl=de&q=j2me+resize+image&btnG=Google-Suche&lr=


----------



## MiDniGG (19. Mrz 2008)

Ja OK. Alles klar das hab ich bis jetzt auch immer gelesen... Mist ^^ Naja wird ja nix aufwändiges. Dann pass ich die Bilders an 

Und jetzt noch was... mit was stop ich den Thread??? Weil ich würde gern während der Diashow zurück zum Menü kommen, ohne, dass er dann weitermacht... Aber alles was ich mit t. grig is komisch ^^


----------



## m@nu (19. Mrz 2008)

hehe  also so einen loop in einem thread programmier ich in spielen meistens so:

```
// in der klasse deklariert:
boolean cancel = false;

// ...
Thread t = new Thread(new Runnable() {
  public void run() {
    while(!cancel) {
      // dein code
    }
  });
```

sobald du cancel "von aussen" auf true setzt wird der loop abgebrochen und der thread beendet sich quasi von selber.
natürlich kannst du hier jetzt nicht mehr mit deinem for-loop arbeiten. erhöh' einfach bei jedem schleifendurchlauf einen zähler "manuell"... so kannst du weiterhin dein array mit den bildern verwenden.

ps. sorry fürs überlesen deines verweises auf die forms-library im anderen forum


----------



## MiDniGG (19. Mrz 2008)

Oh man da hätte ich auch selber drauf kommen können... :-( Manchmal hat man aba au ein Brett vorm Kopf... Nuja. Der Feierabend ruft. 

P.S.: Kein Problem :-D


----------

