Programmierung von Animationseffekten

7) AnimFX-Objekte speichern und lesen

AnimFX-Objekte sind ganz normale monzoom®-Objekte, werden also beim Speichern der Szene mitgeschrieben. monzoom® schreibt die Objektvariablen und die internen Variablen ins File, ebenso die Sequenz mit allen Informationen. Wichtig wird beim erneuten Einladen das Schlüsselwort

INIT_READ

Wenn man AnimFX-Objekte erzeugt, wird der INIT-Aufruf angesprungen. Dort wird der Benutzer z.B. nach Objekten, Parametern etc. gefragt. Das AnimFX-Objekt wird dementsprechend initialisiert, d.h. es werden Variablen angefordert und die Werte werden darin abgespeichert.

Wenn jedoch ein AnimFX-Objekt aus einem File gelesen wird, stehen die Informationen über Parameter, Objekte etc. für das AnimFX-Objekt bereits im File, denn der Benutzer soll nicht mehr danach gefragt werden.

Jedoch muß das Skript bei INIT_READ auch sonst alle anderen Aufgaben erfüllen, wie sie bei INIT nötig sind, d.h. mit AFX_ALLOK_INTERN_VARS die Anzahl der Variablen definieren, mit AFX_SET_INT/AFX_SET_REAL/AFX_SET_OBJ die Variablen initialisieren; außerdem mit AFX_SET_N_OBJ_VARS die Objektvariablen anfordern sowie mit AFX_DEFINE_OBJ_VAR Typ, Name und Bereich der Variable festsetzen. Dieser Teil ist somit identisch zum INIT-Teil.

Es empfiehlt sich daher folgendes Schema:

>INIT:

; Benutzer nach Parametern und Objekten fragen und in

; Variablen speichern

; z.B:

; jetzt fragen, welches Objekt rütteln soll

GET_GEO_OBJ "Welches Objekt"

RETURN_IF_ABBRUCH AB

GET_RESULT obj

; rüttelfaktor

GET_REAL "Wuzzel-Faktor"

RETURN_IF_ABBRUCH AB

GET_RESULT faktor

GOTO INIT1

; man beachte diesen Sprung, das Skript läuft also noch weiter!

 

>INIT_READ:

; hier initialiiseren wir nur die Variablen

SET_VAR obj ----

SET_VAR faktor 0

; danach geht das Skript automatisch zur folgenden Marke über:

 

>INIT1:

; nun die AFX-Initialisierungen erledigen

AFX_ALLOK_INTERN_VARS ich 0 1 1

AFX_SET_REAL ich 0 faktor

AFX_SET_OBJ ich 0 obj

AFX_SET_N_OBJ_VARS...

...

RETURN OK

; hiermit ist die Initialisierung durch das Skript für Schlüsselwort

; INIT bzw. INIT_READ abgeschlossen

 

Bei INIT_READ werden also die Variablen zwar angefordert und initialisiert, aber deren Werte werden beim Lesen des Files gesetzt (und nicht wie bei INIT durch den Benutzer eingegeben).

 

Achtung:

Wenn bei AFX_ALLOK_INTERN_VARS oder AFX_SET_N_OBJ_VARS andere Werte angegeben werden als zuvor beim INIT, so tritt ein Fehler auf und das Lesen wird abgebrochen. monzoom® bemerkt diese Abweichung, denn die Anzahl der Variablen ist auch im Szenenfile mitgespeichert.

Dieser Fall kann sehr leicht auftreten, wenn man z.B. ein Skript ändert (hier: die Anzahl der Variablen verringert oder erhöht) und eine alte Szene liest, die noch auf dieses Skript zurückgreift.

Wenn man also ein Skript ändern will, sollte man es zuvor kopieren und umbenenennen, damit nicht alte Szenen, die dieses Skript benutzen, nicht mehr lesbar werden.

 

Zurück zur Übersicht


© 1997 Oberland Computer