Next: Erste-Hilfe-Simulation
Up: Endgültiger Entwurf und Implementierung
Previous: Hilfe
Die Implementierung erfolgte auf Apple PowerPCs mit Hilfe des Autorensystems
Apple Media Tool (kurz: AMT) und der dazugehörigen objektorientierten Programmiersprache.
Das AMT bietet die Möglichkeit, Bildschirmseiten
einer Multimedia-Anwendung grafisch am Bildschirm zu entwerfen, die Ergebnisse
als Source-Code für die Apple Media Programming Language zu exportieren
und Änderungen im Source-Code zu programmieren. Allerdings ergaben sich beim Arbeiten
mit dem AMT Probleme, die dazu führten, die grafischen Tools nur begrenzt zu benutzen:
-
Der Bildschirmaufbau der grafischen Tools ist zu langsam, um
ein zügiges Arbeiten zu ermöglichen. Beispielsweise ist das Positionieren
der Bildschirmelemente durch Tastatureingabe der X/Y-Positionen
angenehmer und genauer als die Positionierung mit der Maus.
-
Obwohl die gleichen Elemente (z.B. Hintergründe, Buttons) von mehreren
Bildschirmen benutzt werden, legte das AMT für jedes Element auf jedem
Bildschirm ein eigenes Objekt an. Dadurch ergaben sich z.B. bei den
150 Lektionen jeweils 150 identische Hintergrundobjekte, Hilfe-Button, etc.
-
Dadurch, daß jeder Bildschirm andere Objektnamen enthielt, wurde bei einem
Seitenwechsel der gesamte Bildschirm neu aufgebaut und nicht nur die
Bildteile, die sich verändert hatten. Zusammen mit der Verwaltung der vielen unnötigen
Objekte ergab sich eine nicht akzeptable Wartezeit beim Programmablauf.
-
Änderungen an bestimmten Objekten mußten mehrfach ausgeführt werden.
Sollte z.B. das Verhalten des Hilfe-Buttons geändert werden, mußte
diese Änderung an über 150 Objekten durchgeführt werden.
Aus diesen Gründen wurde weitgehend auf das AMT verzichtet. Bei der Programmierung
wurde aus Gründen der Geschwindigkeit verstärkt darauf geachtet wenige Objekte zu
benutzen und Objekte wiederzuverwenden.
Außerdem wurde der Bildschirmaufbau so optimiert, daß nur die notwendigen
Bildelemente neu gezeichnet werden und nicht der komplette Bildschirm.
Um die Anzahl der Objekte weiter zu minimieren, wurden Bildschirmelemente zu einer
Klasse zusammengefaßt, die die gleiche Bildschirmposition und das gleiche Verhalten haben.
Diese Klasse bietet die Möglichkeit,in Objekten
die Datenquelle zu ändern. Beispielsweise existiert für die 150 Lektionsseiten
nur ein Textelement mit einer festen Position und einem festen Verhalten. Durch Angabe eines
Files ist es mit der Switch-Methode allerdings möglich, einen anderen Text
in den Speicher zu laden und auf dem Bildschirm darzustellen.
Die Switch-Methode steht für alle Medientypen zur Verfügung.
Beispielsweise class cSwitchablePictureHandler, die die Klasse
cPictureHandler ersetzt und Methoden und Verhaltensweisen von Bildern
zur Verfügung stellt.
Die Idee der Switchable-Media stammt von Dan Crow der seine Klassen im Internet
zur Verfügung stellt.
Einen weiteren Geschwindigkeitsvorteil ereichten wir durch das dynamische Anfügen
von Bildelementen: Ein Bildschirm besteht im AMT eigentlich aus einer festen
Anzahl von Bildelementen, die in den Speicher geladen werden bevor die
Bildseite aufgebaut wird. Dadurch, daß viele Elemente (z.B. Historyliste, Hilfe-texte und -button, etc.) nicht immer
sichtbar sind, ist dieses Laden in den Speicher oft unnötig und verbraucht zuviel Zeit. Daher haben wir die Klasse der
Bildschirme (class cDefaultContainer) erweitert um die Methode
Anfuegen(Objekt).
Die Bildseiten enthalten beim Aufruf nur die nötigsten Elemente. Weitere Objekte
werden erst hinzugefügt, wenn sie benötigt werden.
Die Klasse cDefaultContainer wurde um die Methode Anfuegen(Objekt) erweitert
und in cMpigContainer umbennant.
Da das AMT bildschirmseitenorientiert ist, ist dementsprechend die Implementierung
unterteilt. Um zwischen den Seiten zu wechseln, wird die Standardmethode
oBinder.Goto(Seite) des AMT benutzt.
Das Programm ist in Seiten unterteilt, die wiederum aus Medienobjekten bestehen.
Folgende Seiten sind im Programm enthalten:
-
oHauptmenu stellt die Hauptauswahl des Programms zur
Verfügung. Der Benutzer kann folgende Punkte anwählen:
Einführung, Gesamtkurs, Fallbeispiele, Nachschlagewerk, Programmende.
-
oEinfuehrung zeigt dem Anwender die Benutzung des Programms anhand
von Beispielen.
-
oNachschlagewerk ermöglicht dem Benutzer, Begriffe nach
Gruppen geordnet auszuwählen (Symptome, Notfälle, Maßnahmen, Rechtsfragen)
Es wird an die entspechende Lektionsseite gesprungen.
-
Die Seite Fallbeispiele ermöglicht dem Benutzer, sein erworbenes Wissen
in praktischen Übungen anzuwenden. Da dieser Teil komplexe Berechnungen
erfordert und über Objekte mit umfangreichen Abhängigkeiten verfügt, ist dieser
Teil in Kapitel
näher erläutert. -
In oOptionen kann der Benutzer die Lautstärken der
Audioausgaben regeln. Dafür enthält oOptionen
die beiden Objekte Video-Regler und Hilfe-Regler, die die
Lautstärke der Videoausgabe und der Hilfetexte steuern.
Die Werte lassen sich über Video_Regler.Vol und Hilfe_Regler.Vol
abfragen.
-
oUebersicht stellt eine Auswahlliste der Lektionen
im Gesamtkurs dar. Die schon besuchten Lektionen werden im Feld
l_init.besucht markiert und auf dem Bildschirm farblich gelennzeichnet.
Das Feld enthält für jede Lektion einen Eintrag (31 Einträge) der auf TRUE gesetzt
ist, falls die Lektion schon besucht ist, ansonsten enthält der Eintrag
den Wert FALSE.
-
oLektion zeigt eine Informationseinheit, bestehend
aus einem Text und eventuell einer Grafik, bzw. einem Video einer Lektion
an.
Dieses Objekt wird von der Übersicht des Gesamtkurses, bzw. vom
Nachschlagewerk aufgerufen. Die einzelnen Inhalte sind in dem Feld
oLektion.L_Inhalt gespeichert. Für jede Lektionsseite (152 Seiten)
existiert ein Eintrag der folgendermaßen aufgebaut ist:
- Filename des Lektionstextes
- Nummer der Lektion
- Nummer der Seite innerhalb der Lektion
- weitere Medienobjekte: grafik, video oder "'"' für keins
- Filename des Medienobjekts, "'"' für keins
- x-Position des Medienobjekts
- y-Position des Medienobjekts
Beispiel: ["'L2_3.rtf"', 2, 3, "'grafik"', "'Bild10.pic"', 20, 30] zeigt die
dritte Seite der zweiten Lektion mit einer Grafik an Position (20,30).
Die Nummer der Lektionsseite wird in l_init.scr_nb gespeichert.
Beim Sprung zu einer Lektionsseite mit oBinder.Goto(Objekt) muß diese
Variable vorher gesetzt werden.
Ist eine Lektionseite schon auf dem Bildschirm und es soll zu einer
anderen Lektionsseite gesprungen werden, wird nicht oBinder.Goto benutzt
sondern eine eigene Methode oLektion.Goto_Lektion(Objekt), die nur
die nötigen Medien auswechselt und neu zeichnet.
Zusätzlich zu den Seiten enthält das Programm Dialogfenster, die dynamisch
an die Seiten angefügt und aktiviert werden:
-
Mit Hilfe des oHistory-Objekts erhält der Benutzer einen Überblick
der zehn letzten besuchten Seiten und kann durch Mausklick auf die
entsprechende Seite zurückspringen. Mit oHistory.Add(Seite, Seitennummer
wird ein Eintrag in die History-Liste eingefügt.
Seite ist die aktuelle Bildschirmseite. Seitennummer ist nur bei den
Lektionsseiten relevant, da dort die Seite gleich bleibt, allerdings
der Inhalt geändert wird.
entsprechende Lektionsnummer.
-
oIndex zeigt eine Auswahlliste mit Indexeinträgen, die auf betreffende
Seiten verweisen.
Next: Erste-Hilfe-Simulation
Up: Endgültiger Entwurf und Implementierung
Previous: Hilfe
Wed Dec 11 16:18:19 MET 1996