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!