Auf Audio CDs sind immer öfter Daten-Tracks zu finden, auf die mit dem PC zugegriffen werden kann, und in denen eine Director Animation mit Informationen über das Produkt liegt, ergänzt mit Musik-Videos. Dazu besteht die Möglichkeit innerhalb eines Director Movies ein Apple Quicktime Video zu präsentieren. Auf CD-ROM Produktionen ist eine Kombination dieser beiden Produkte sehr beliebt, da sich beide ergänzen. Director bietet den Produktrahmen mit der notwendigen Steuerungslogik, und die Video-Sequenzen sind über das Apple Quicktime format verfügbar.
Ein anderes Einsatzgebiet Director's liegt in der Welt des Internet.
Ein Director Movie kann zum Shockwave-Movie übersetzt werden, das
dann mittels eines Plug-In's im Web-Browser gestartet werden kann. Der
Aufruf des Shockwave-Movies kann über HTML-Befehle erfolgen. Das notwendige
Shockwave Plug-In ist kostenlos auf der Homepage
Macromedia's erhältlich, leider ist es nur für die Plattformen
Microsoft Windows und Apple Macintosh verfügbar. Seit der aktuellen
Version 6.5 ist es in Director außerdem möglich, das Movie als
Java Code zu übersetzen. Entweder als fertigen Bytecode, oder sogar
als Java-Quellcode. Allerdings ist dies nur eingeschränkt möglich
- bestimmte Funktionen Director's werden dabei noch nicht unterstützt.
Notwendig für die Handhabung ist zum einen eine Verwaltung der Ressourcen, also der Graphiken, Texte, etc. Des weiteren muß die Interaktion dieser Ressourcen Koordinaten- und Zeitbedingt erstellbar sein. Dafür wäre eine Art Storyboard, so wie es in der Filmproduktion üblich ist, angebracht. Um dann noch spezifischer in den Movie einzugreifen ist natürlich auch eine Skriptsprache notwendig, sowie die dazugehörigen Werkzeuge wie Debugger und Watcher.
Für jedes Cast Member kann ein eigener Handler definiert werden, der entweder mit der Skriptsprache Lingo geschrieben wird, oder als vorgefertigter Handler aus einem Menü Director's ausgewählt wird. In vielen Fällen ist es also möglich vorgefertigte Elemente von Director auszuwählen, ohne selbst mit Lingo programmieren zu müssen.
In einem Cast Window können bis zu 1000 Cast Member gespeichert
werden. Director kann bei Bedarf auch mehrere Cast Windows gleichzeitig
verwalten. Bei großen Projekten ist es sinnvoll von der Möglichkeit
gebrauch zu machen, Casts extern anzulegen, also als separates File. Das
bringt den Vorteil, daß ein kompletter Cast während der Laufzeit
des Movies nachgeladen werden kann, und so die Anfangs-Ladezeit des Movies
zu verkürzt werden kann.
Dieser Score wird also während des Abspielens gelesen. Damit
ist Director in der Lage, die Cast Member in angegebener Reihenfolge über
die Stage Area zu bewegen und sie agieren zu lassen.
Glücklicherweise gibt es in jedem Skript-Window allerdings auch eine Menüpunt mit einer Liste sämtlicher Handler, um sie schneller zu finden.
Außer dieser impliziten Verwendung der Audio Sequenzen im Score
kann auch mittels der Lingo Anweisung "sound playFile"
auf eine externe Audiodatei zugegriffen werden.
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.
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.
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.
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:
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..
Hier die Screenshots vor und nach dem Klicken auf das kleine gelbe Buch:
<HTML>
<HEAD>
<TITLE>Shockwave Movie</TITLE>
</HEAD>
<BODY>
<CENTER>
<EMBED WIDTH=464 HEIGHT=367
SRC="animation.dcr">
</CENTER>
</BODY>
</HTML>
Natürlich können im HTML-Code auch alle anderen Anweisungen
auftreten, wie es in einer üblichen HTML-Seite der Fall ist. Falls
das Shockwave-Plug-In für den Browser installiert ist, wird dieses
vom Browser aktiviert und das Shockwave Movie auf der HTML Seite gestartet.
Speziell für die Shockwave Movies wurde in Lingo ein erweiterter Befehlssatz implementiert, der sich netLingo nennt. So kann unter anderem abgeprüft werden, wie weit ein Download fortgeschritten ist, oder ob spezielle Cast Member bereits verfügbar sind. In professionellen Director Movies wird während einem Download bereits ein kleines Intro gezeigt, damit der Betrachter nicht vor einem schwarzen Bildschirm warten muß.
Mit netLingo kann auch Kommunikation mit dem Browser erfolgen. So kann zum Beispiel auf die Statusleiste zugegriffen werden, oder auf URLs verwiesen werden. Mit dem Befehl externalEvent können sogar JavaScript Funktionen innerhalb der HTML Seite aufgerufen werden, in die das Shockwave Movie eingebettet ist.
Auch in der anderen Richtung, vom Browser zum Shockwave Movie können Kommandos geschickt werden. So kann ein Browser ein Shockwave Movie starten und stoppen, neu beginnen lassen, oder zu bestimmten Szenen wechseln lassen.
Über Plug-Ins (im Firmenslang "XObjects" und "Xtras" genannt), lassen sich
auch von Drittanbietern Funktionen bereitstellen, die das Autorensystem "eigentlich"
nicht beherrscht.
Im Director Software Paket sind mehrere Kurzanleitungen enthalten "Getting Started", "Using Director" und "Learning Lingo" sowie eine Lingo Referenz "Lingo Dictionary", die für den Einstieg nützlich sind.
Vom Verlag der Macromedia Press ist weiterhin ein sehr umfangreiches Buch erschienen mit dem Titel "Director Demystified", welches ich sehr empfehlen kann. Speziell zu diesem Buch gibt es auch eine Homepage: http://www.demystified.com
Weiterhin stehen im Internet eine Vielzahl von Quellen bereit.
http://www.macromedia.com
- Macromedia's Homepage
http://www-euro.macromedia.com
- Mirror in London, aber auch nicht unbedingt schneller
http://www.shockrave.com
- Forum von Macromedia mit zahllosen Beispielen, meißt kommerzieller
Director Produktionen. (Lohnt sich!)
http://www.startmovie.net
- Heim von Director_List
Weitere Quellen:
http://hakatai.mcli.dist.maricopa.edu/director/
http://www.snafu.de/~dp/
Für gezielte Fragen und spezielle Probleme bietet Macromedia mehrere Newsgroups an, die man direkt auf Macromedia's Homepage abonnieren kann (subscribe).
© 1998 by Bernhard J. Hirschmann