Definition globaler Variablen
Globale Variablen sind die solche Variablen, welche von einem Skript exportiert werden, so dass andere Skripte darauf zugreifen können. Dabei ist zu unterscheiden, ob eine globale Variable im globalen Initialiserungsskript oder woanders definiert wurde. Im ersten Fall wird die Variable nur einmal, und zwar zu Beginn der Animation initialisiert. Ansonsten wird die Variable bei jedem Animationsschritt neu initialisiert ( siehe dynamische Struktur ).
Syntax |
Beispiel |
Beschreibung |
export Type Name [ ( Value ) ]; |
export double dPI( 3.14159265 ); |
Die Exportanweisung definiert eine globale Variable. Auf diese Variable können alle Unterelemente (Steuerskript, Animationsskripts) zugreifen. Optional kann dabei ein Initialwert angegeben werde. |
import Type Name; |
import double dPI; |
Die Importanweisung referenziert eine im übergeordneten Skript ( globales Initialisierungsskript, Steuerskript ) durch export definierte Variable. |
Globale Variablen können für Konstanten eingesetzt werden, die in mehreren Skripten Verwendung finden. Außerdem bieten sie den einzelnen Skripten die Möglichkeit, untereinander Daten auszutauschen. Folgendes Szenario soll dies veranschaulichen ( Das Beispiel ist im Beispielprojekt “Animationsdemo” von VIS-All enthalten ):
Szenario
Eine Frau soll entlang einer vorgegebenen Linienfolge laufen. Zur selben Zeit soll ein Baukran seine tägliche Arbeit verrichten, er soll sich drehen und dabei verschiedene Gegenstände von Ort A nach Ort B transportieren. Nun kommt der Weg der Frau dem Arbeitsbereich des Baukrans gefährlich nahe. Um sie nicht zu gefährden, stoppt der rücksichtsvolle Kranführer seinen Kran so lange, wie die Frau die Baustelle passiert. Im Szenario wird angenommen, dass die Skripte für die Frau wie für den Baukran schon fertig sind. Nur der Kranführer muss im Skript noch darüber informiert werden, dass die Frau seinen Bereich betritt.
Lösung
Die Lösung des Problems liegt in der Kommunikation der beiden über eine globale Variable. Im globalen Initialisierung-Skript wird eine Variable vom Typ booldefiniert. Über diese Variable werden Kranführer und Frau kommunizieren. Standardmäßig wird die Variable auf true gesetzt, was bedeutet, dass der Kran ohne Bedenken seine Arbeit verrichten kann. Kommt die Frau allerdings dem Kran gefährlich nahe, teilt sie dem Kranführer mit, dass er doch bitte ab jetzt aufhören soll, mit dem Kran zu schwenken. Dieses Mitteilen funktioniert durch das Setzen der importierten Variable bBCRotate auf false. Der Kranführer auf der anderen Seite überprüft jedes mal bevor er den Kran bedient, ob die Frau auch nicht in seinen Einzugsbereich getreten ist, indem er diese Variable bBCRotate auf true testet. Falls die Frau den Einzugsbereich des Krans wieder verläßt, setzt sie die Variable wieder auf true, und der Kran kann unbekümmert seine Arbeit fortsetzen.

Weiterhin werden globale Variablen verwendet, um die aktuelle Zeit zu setzen. Die Skripte sind so gestaltet, dass die aktuelle Position und Orientierung des zugeordneten Symbols von der seit dem Start vergangenen Zeit abhängt. Dabei wird bei jedem Abarbeiten des Skriptes die neueste Systemzeit ermittelt und daraufhin die vergangene Zeit in seit dem letzten Durchlauf des Skriptes berechnet. Anhand dieser Zeitdifferenz werden die neuen Werte für die Verschiebung, Drehung, usw. berechnet. ( siehe Zugriff auf Zeitgeber ). Natürlich kann für die Positionierung auch eine globale Zählervariable verwendet werden.