Grundsätzlich kann man ein Director Movie in zwei Gruppen einteilen. Zum einen die Frame-gesteuerten Movies und zum anderen die Skript-gesteuerten Movies, auf die im Folgenden näher eingegangen wird. Trotz dieser künstlichen Einteilung sind die meisten Director Produktionen Mischgebilde, die Phasenweise Frame- und Phasenweise Skript-gesteuert sind. Jedoch ist eine Einteilung zum Verständnis hilfreich.
Bei einem Frame-gesteuerten Movie sind die Informationen zum Ablauf im Score festgehalten. Das Movie beginnt auf der linken Seite im Score und arbeitet dessen Informationen mehr oder weniger sequentiell nach rechts ab - ähnlich wie bei einem Zeichentrickfilm. In der Regel kommt es in einem solchen Film an bestimmen Stellen zu Schlüssel-Szenen, an denen Interaktivität gefordert ist und ein Lingo Skript zum Einsatz kommt, oder ein Bahavior. Trotzdem verläuft das Movie zum größten Teil Frame-gesteuert.
Um einen ersten Einblick in die Arbeitsweise mit Director zu geben, soll nun ein "Hello World!" Movie erstellt werden. Dazu kann man wie folgt vorgehen:
Falls das Cast Window noch nicht sichtbar sein sollte, kann man es über das Window-Menü "Cast" sichtbar machen.
Im Window-Menü den Menüpunkt "Text" auswählen.
Es wird ein Text-Eingabefenster geöffnet, in dem Text sowohl eingegeben, als auch formatiert werden kann.
Die Zeichenfolge "Hello World!" eingeben.
Das Text-Eingabefenster schließen.
Es wurde nun aus dem Eingabe-String "Hello World!" automatisch ein Cast Member angelegt und im Cast Window gespeichert.
Öffnen Sie nun das Score Window mit dem Menüpunkt "Score" im Window-Menü.
Unser Cast Member soll nun in das Movie eingebunden werden. Am einfachsten ist dies möglich, wenn man das Cast Member mit der Maus auf die Stage Area zieht. Das Cast Member wird dann im 1. freien Channel des Scores untergebracht.
Das Cast Member per drag & drop in die Mitte des Bildschirms - auf die Stage Area - ziehen.
Gegebenenfalls muß die Textbox auf der Stage Area etwas angepaßt werden, damit der String einigermaßen zentriert erscheint.
Im Score Window kann man nun sehen, wie das Cast Member in einen Channel aufgenommen wurde. Das Cast Member wird durch die blaufarbigen Sprites repräsentiert. Da die Spalten im Score die Frames darstellen, ist die Länge der belegten Sprites mit der Dauer der Sichtbarkeit auf dem Stage verbunden. In diesem Beispiel spielt dies keine Rolle, da wir nicht definiert haben, daß sich der Text auf dem Stage bewegten soll, und das Playback standardmäßig eine Schleife abläuft und so immer wiederholt wird. Dieser Playback Loop kann im Control Panel abgestellt werden. (Control Panel verfügbar über Menüpunkt "Control Panel" im Window-Menü.)
Im Prinzip ist dies nun die einfachste Art eines Director Movies, auch wenn es sich dabei nicht um ein bewegtes Bild handelt. Das Movie ist jedoch ablauffähig und könnte jetzt auch als Director Movie abgespeichert werden, oder als Shockwave Movie exportiert werden.
Um das vorige Beispiel etwas zu erweitern könnte man nun den Text über den Stage wandern lassen.
Das letzte Sprite des "Hello World!"-Textes selektieren. Darauf achten, daß wirklich nur das letzte Sprite selektiert ist, und nicht alle.
Im Insert-Menü den Menüpunkt "Keyframe" auswählen.
Das erste und das letzte Sprite der "Hello World!" Textes sind nun Keyframes.
Das erste Sprite des "Hello World!"-Textes selektieren. Wiederum darauf achten, daß wirklich nur das erste Sprite selektiert ist, und nicht alle.
Nun den Text auf der Stage Area per drag & drop senkrecht nach unten ziehen, bis der Text die sichtbare Stage Area verläßt. Dort loslassen.
Während des Ziehens sieht man nun, wie sich eine Linie bildet, vom Startpunkt des Ziehens bis zum Endpunkt. Dabei handelt es sich um einen Sprite Path.
Bei der Wiedergabe dieses Movies bewegt sich nun der Text vom einen Keyframe zum anderen. Er scrollt also sozusagen von unten herein bis zur ursprünglichen Stelle des Textes.
Weitere Keyframes können in den Sprite Path eingefügt werden bei analogem Vorgehen. Das mit der Maus selektierte Sprite ist dabei immer als Einfügemarke zu betrachten. Durch verschieben eines mittleren Keyframes wird der Sprite Path dann bogenförmig abgerundet.
Im Gegensatz zum Frame-gesteuerten Director Movie hat bei einem Skript-gesteuerten Movie Lingo die hauptsächliche Kontrolle über den Film. Die Informationen im Score werden in der Regel nicht einfach eingelesen und abgespielt, sondern es wird ein Stück weit eingelesen und dann gestoppt, damit in einer solchen Szene mit Lingo Code weitere Ereignisse gesteuert werden können. Und zwar geschieht das über folgenden Trick: Zu Beginn des Movies werden wie beim Frame-gesteuerten Movie die Informationen des Scores eingelesen. Dann übernimmt Lingo die Kontrolle mit einem Stop-Befehl im Score-Skript, und weist allen Sprites das Attribut "Puppet" zu ("puppet": Marionette, Puppe).
Wenn für ein Sprite dieses Attribut gesetzt ist, dann wird die Steuer-Information des Score Channels, in dem sich dieses Sprite befindet, ignoriert, und die Steuerung komplett in die Hand des Programmierers gegeben. Das Objekt, das in diesem Sprite untergebracht ist, kann dann nur noch mit Lingo-Anweisungen angesprochen werden. Es kann dann beispielsweise seine Lage verändern oder seine Sichtbarkeit. Oder es kann einfach auf eine Benutzer-Aktion gewartet werden, die dann von einem entsprechenden Handler ausgeführt wird. Natürlich kann per Anweisung dieses Attribut wieder gelöscht werden, damit die Abarbeitung im Score weitergehen kann.
PrepareOffice
global sOfficeImage, sBook, sOpenBook,
sLastsprite, gCurrentSequence, sBookPageLeft, sBookPageRight,
sTurnPageLeft, sTurnPageRight, sBookExit, sTextStatus,
sClipboardOnWall, sClipboardDown2, sClipboardDown3,
sClipboardDown4, sClipboardUp, sClipboardText, sCCMlogo,
sMenubar, sMenubarAreaInventory, sMenubarAreaMap, sInventory1,
sInventory2, sInventory3, sInventory4, sInventory5, sInventory6,
sInventory7, sInventoryExit, sTextField, gInventory3InUse,
sWaterFountain, sMouseHole, gClipboardClicked,
sMenubarClipboardHighlight, sOfficeMan, sOfficeManArm1,
sOfficeManArm2, sOfficeManArm3, sOfficeManArm4, sOfficeSheet,
sOfficePaper
set gCurrentSequence to "Office"
--make all objects to puppets
repeat with i in [sOfficeImage, sBook, sOpenBook, sBookExit, sBookPageLeft,
sBookPageRight, sTurnPageLeft, sTurnPageRight, sClipboardOnWall,
sClipboardDown2, sClipboardDown3, sClipboardDown4, sClipboardUp,
sClipboardText, sCCMlogo, sWaterFountain, sMouseHole,
sMenubarClipboardHighlight, sOfficeMan, sOfficeManArm1, sOfficeManArm2,
sOfficeManArm3, sOfficeSheet, sOfficePaper, sOfficeManArm4]
puppetSprite i, TRUE
end repeat
if gClipboardClicked = 1 then set the
visible of sprite sClipboardOnWall to FALSE
--make not needed Objects invisible:
repeat with i in [sOpenBook, sBookPageLeft, sBookPageRight, sBookExit,
sTurnPageLeft, sTurnPageRight, sClipboardUp, sClipboardText,
sInventory1, sInventory2, sInventory3, sInventory4, sInventory5,
sInventory6, sInventory7, sInventoryExit, sMenubarClipboardHighlight,
sOfficeManArm1, sOfficeManArm2, sOfficeManArm4, sOfficeSheet]
set the visible of sprite i to FALSE
end repeat
--make needed objects visible:
repeat with i in [sOfficeImage, sBook, sClipboardOnWall, sClipboardDown2,
sClipboardDown3, sClipboardDown4, sCCMlogo, sWaterFountain, sMouseHole,
sOfficeMan, sOfficeManArm3]
set the visible of sprite i to TRUE
end repeat
end PrepareOffice |
Dieses Stück Lingo Code ist ein typisches Beispiel für die Initialisierung einer Skript-gesteuerten Szene. Da in jeden Handler alle globalen Variablen angegeben werden müssen die Verwendet werden, beginnt der Handler mit dieser Anweisung. Die dort aufgeführten Variablen enthalten Channel-Nummern für die jeweiligen Objekte die auf dem Stage erscheinen sollen. Damit ist es möglich die benutzten Objekte durch ihre Namen anzusprechen, obwohl es immer der Channel im Score ist, dem man im folgenden Attribute zuweist. Das kleine "s" vor den Variablennamen deutet darauf hin, daß es sich um Variablen handelt, die den Score betreffen. Diese Notation ist jedoch keine Pflicht.
Die Anweisung 'set gCurrentSequence to "Office"' schreibt den String "Office" in die globale Variable "gCurrentSequence". Für Szenen bedingte Abfragen ist es oft nützlich wenn man Szenen-Namen vergibt und diese abfragen kann.
Kommentare werden mit "--" eingeleitet.
In der ersten Repeat-Schleife werden dann alle angegebenen Objekte indirekt zu "Puppets" gemacht. Streng genommen sind es natürlich die dazugehörigen Score Channels die das Attribut "puppet" erhalten.
Die Anweisung "if gClipboardClicked = 1 then set the visible of sprite sClipboardOnWall to FALSE" schaltet die Sichtbarkeit des Objektes aus, wenn die globale Variable gClipboardClicked gesetzt ist.
In den folgenden 2 Repeat-Schleifen werden bestimme Objekte sichtbar bzw. unsichtbar gemacht. Ein wichtiger Bestandteil in einem Director Movie kann das sichtbar und unsichtbar machen von Objekten sein. Auf diese Weise kann man zum Beispiel ein Clipboard das an der Wand hängt durch den entsprechenden Handler von Nahem betrachten. Ein solcher Handler kann dann in dem Objekt des Bildes des an der Wand hängenden Clipboards sein:
on mouseUp global sClipboardOnWall, sClipboardUp, sClipboardText set the visible of sprite sClipboardOnWall to FALSE set the visible of sprite sClipboardText to TRUE set the visible of sprite sClipboardUp to TRUE end mouseUp |
Der Handler wird aufgerufen, wenn ein Mausklick auf das Objekt des zugeklappten Buches erfolgte. Die Objekte die benötigt werden, wenn das offene Buch dargestellt werden soll, werden sichtbar gemacht, und andere Objekte, die dann nicht mehr sichtbar sein sollen werden unsichtbar gemacht - hier ist das nur das Clipboard an der Wand..