Implementierung

Um einen Animations-Effekt zu erreichen, müssen die 34 Einzelbilder fortlaufend nacheinander auf das LCD gezeichnet werden. Dabei sollte ein "Ruckeln" vermieden werden, damit die Animation möglichst flüssig aussieht. Hier können die Echtzeitfähigkeiten von JControl hervorragend eingesetzt werden: Wir implementieren die Animation als eigenen Thread, der kontinuierlich alle 100ms ein neues Einzelbild zeichnet. Das Zeichnen und Warten benötigt hier lediglich 2 Zeilen, wobei der Aufruf von ThreadExt.sleep(100) in einem try-catch- Block stattfinden muss, der hier allerdings fast die gesamte Methode run() umfasst.

21      public void run() {
22        for (;;) {
23          try {
24            for (int i=0; i<IMAGE_COUNT; i++) {
25              String name = "anim00";
26              if (i<10) {
27                name = name.concat("0").concat(String.valueOf(i));
28              } else {
29                name = name.concat(String.valueOf(i));
30              }
31              lcd.drawImage(new Resource(name.concat(".jcif")),32,0);
32              ThreadExt.sleep(100); // wait 100 millis
33            }
34          } catch (Exception e) {}
35        }
36      }
37             
Listing 1: Auszug aus AnimationExample.java

Wie in Listing 1 zu sehen ist, wird die Systemklasse Resource verwendet, um auf die Bilddateien zuzugreifen, die im Flashspeicher des JControl-Gerätes abgelegt wurden.

Um die Animation zu starten, muss jetzt nur noch der Thread instantiiert und gestartet werden, was der folgende Code erledigt:

38      /**
39       * Main Method. Program execution starts here.
40       */
41      public static void main(String[] args) {
42        // create and start animation thread
43        new AnimationExample().start();
44      }
45             
Listing 3: Auszug aus AnimationExample.java

Der vollständige Quelltext des AnimationExamples kann in der Datei AnimationExample.zip heruntergeladen werden. Entpacken Sie das ZIP-Archiv und öffnen Sie das enthaltene Projekt AnimationExample.jcp in der JControl/IDE. Laden Sie das Programm auf Ihr JControl-Gerät und genießen Sie das JControl-Logo in 3D!