Projektarbeit über das Autorensystem

Macromedia Director

von Bernhard J. Hirschmann

Über diese Ausarbeitung - Vorwort

In dieser Ausarbeitung wird auf das Autorensystem Macromedia Director eingegangen. Die Komponenten die für die Entwicklung eines Director Movies notwendig sind werden vorgestellt und erläutert. Leider würde eine langsame Einführung in das Autorensystem den Rahmen dieser Ausarbeitung bei weitem sprengen. Tatsächlich handelt es sich bei Director um eine mächtige Entwicklungsumgebung deren Möglichkeiten mir selbst in meinem 2. Praxissemester noch nicht alle vertraut geworden sind. Dennoch kann man mit Director schnell Ergebnisse erzielen und kleinere Animationen ohne viel Mühe erstellen. An dieser Stelle sei auf die Lern-Lektionen in Director verwiesen, die animiert auf die Grundlagen eingehen.

Einführung

Macromedia Director ist eine Entwicklungsumgebung für interaktive Animationen, korrekt bezeichnet ein Autorensystem. Diese Entwicklungsumgebung ermöglicht es, Elemente wie Grafiken, Audio- Sequenzen und Texte in eine Animation einfließen zu lassen, und diese dann beispielsweise auf CD-ROM als Präsentation zu bringen. Dabei beschränken sich die Möglichkeiten in Director nicht auf das Interagieren dieser Elemente; vielmehr ist es möglich auf die Ressourcen des Computersystems zuzugreifen. So sind momentan beispielsweise animierte Installationsprogramme verschiedener Softwarepakete mit Director entwickelt, die durch grafische Menüs besonderes leichte Bedienung versprechen.

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.

Struktur von Director

Um ein Director Movie zu erstellen, muß an verschiedenen Stellen im Autorensystem Hand angelegt werden. Doch was wird eigentlich benötigt, um eine interaktive Animation zu entwickeln?

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.

Stage

Die "Leinwand" die Director benützt um darauf das Movie darzustellen wird Stage bezeichnet. Das ist der Bereich, den der Betrachter sieht wenn das Movie fertig ist. Innerhalb des Autorensystems ist sie standardmäßig in der Mitte des Arbeitsbereiches. Die Bereichsgröße entspricht der definierten Breite und Höhe des Director Movies

Cast Window

Die Verwaltung der Ressourcen in Director übernimmt das Cast Window. Es ist Tabellen-artig aufgebaut und kann Elemente wie Grafiken, Texte, Audio-Sequenzen, Apple Quicktime Movies und sogar fremde Director Movies speichern. Außerdem werden im Cast Window noch weitere Elemente gespeichert, die für den internen Ablauf notwendig sind, wie z.B. Skripte in Director's Skriptsprache Lingo oder Effekte wie Szenen Überblendungen. Jedes dieser Elemente, das hier gespeichert ist, wird als Cast Member bezeichnet.

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.
 
 

Screenshot des Cast Window

Score Window

Als das "Storyboard" - ähnliche Szenensystem könnte man wohl das Score Window bezeichnen. In einer Tabelle können die einzelnen Szenen-Elemente eingesetzt werden, die ihrerseits symbolische Verknüpfungen zu den jeweiligen Cast Membern darstellen. Dabei repräsentieren die Spalten in dieser Tabelle die einzelnen Channels, die auf der Stage Area als überlappende Schichten sichtbar werden. Die Zeilen der Tabelle repräsentieren die Frames des Movies, also die Einzelbilder aus denen sich Trickfilm-artig das Movie zusammensetzt. Die einzelnen Zellen dieser Tabellenartigen Anordnung werden als Sprites bezeichnet. Insgesamt stehen für allgemeine Cast Member 120 Channels zur Verfügung. 6 Weitere Channels sind für Steuerelemente vorgesehen wie Farbpaletten, Skripte und Effekte. 2 davon sind für Audio Sequenzen vorgesehen.

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.
 
 

Screenshot des Score Window

Skript Window

Zur Bearbeitung der Lingo Skripte steht ein oder mehrere Skript Window(s) zur Verfügung. Der Lingo Code wird darin syntax sensitiv dargestellt, und es stehen Hilfen zur Verfügung, wie z.B. eine Liste mit kategorisierten Lingo Befehlen.

Screenshot des Script Window


 

Skriptsprache Lingo

Lingo ist eine objekt orientierte Skriptsprache, die sich fast wie reines Englisch liest. Sie existiert nur innerhalb Directors. Für die Interaktivität eines Director Movies ist Lingo sehr wichtig, ohne Lingo würde ein solcher Director Movie rein sequentiell ablaufen. In Director vorgesehene Event-Handler können mit Lingo definiert werden, um damit unmittelbar in das Movie einzugreifen. Szenenabläufe können mit Lingo beeinträchtigt werden und sogar komplett durch Lingo gesteuert werden. Damit besteht die Möglichkeit die Anweisungen im Score regelrecht zu ignorieren; die Regel ist jedoch eher die Kooperation zwischen dem im Score definierten Ablauf und den Lingo Befehlen.

Bahaviors

Alternativ dazu, sämtliche Handler und Abläufe in Lingo zu codieren, besteht die Möglichkeit ein vordefiniertes Verhalten - ein sogenanntes Behavior - auszuwählen, von denen Director einige in seiner Bahavior Library anbietet. Director-intern wird dieses Verhalten dann in Lingo Code umgewandelt. Man kann so also bereits einen gewissen Anteil an Interaktivität schaffen, ohne Lingo programmieren zu müssen.

Verschiedene Arten von Lingo-Skripten

Lingo Anweisungen können innerhalb Directors an mehreren verschiedenen Stellen auftauchen. Auf grund der Objekt-Orientierung können sowohl Cast-Member eigene Handler haben, als auch Sprites. Man spricht bei Cast Member Handlern von einem "Script of Cast Member" und bei Sprite Handlern von einem "Score Script". Des weiteren gibt es ein "Movie Script" das als globales Skript und zur Initialisierung dient. Gewöhnungsbedürftig ist, daß alle 3 Arten von Lingo Skripten entsprechend über das System verteilt sind, und nicht die Möglichkeit besteht, den gesamten Lingo Code auf einmal zu Gesicht zu bekommen. Die Handler stehen jeweils bei ihren Objekten, über die auf den Code zugegriffen werden kann.

Glücklicherweise gibt es in jedem Skript-Window allerdings auch eine Menüpunt mit einer Liste sämtlicher Handler, um sie schneller zu finden.

Audio Implementierung

Director unterstützt die wichtigsten Audio Formate wie WAVE und AIFF. Audio Files werden als gewöhnliche Cast Member importiert. Für die Plazierung im Score stehen 2 Channels für Audio zur Verfügung. Das bedeutet, daß Audio Cast Member nicht wie gewöhnliche Cast Member in jeden beliebigen Channel aufgenommen werden können, sondern lediglich in einen dieser 2 speziellen Audio Channels.

Außer dieser impliziten Verwendung der Audio Sequenzen im Score kann auch mittels der Lingo Anweisung "sound playFile" auf eine externe Audiodatei zugegriffen werden.


Wenn Ihnen diese Website weitergeholfen hat, dann unterstützen Sie mich bitte, indem Sie meinen Sponsor besuchen. Vielen Dank.
Weltmeisterschaft 2006 Zimmer


Grundlagen eines Director Movies

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.

Frame-gesteuertes Director Movie

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.

Beispiel: Das "Hello World!" Director Movie

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:
 
HelloWorld1

 
HelloWorld2

 

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.

Beispiel: Das Enhanced "Hello World!" Director Movie

Um das vorige Beispiel etwas zu erweitern könnte man nun den Text über den Stage wandern lassen.
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.

Sprite Path

Skript-gesteuertes Director Movie

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" zu deutsch.: 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.

Beispiel: Lingo-Skript zum Initialisieren einer Skript-gesteuerten Szene

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:

Beispiel: Lingo Handler des "Clipboards"

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..

Hier die Screenshots vor und nach dem Klicken auf das kleine gelbe Buch:
 
 

Clipboard1

Clipboard2


 
 

Ein Shockwave Movie in HTML einbetten

Um ein Shockwave Movie in einem Browser starten zu können, muß mittels dem HTML Tag <EMBED> das Movie in den HTML-Code eingebettet werden. Beachtet werden sollte, daß die Breite und Höhe des Movies angegeben werden muß. Der HTML-Code müßte dann in etwa so aussehen:

<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.
 

Weitere Merkmale

Um im Umgang mit dem Internet Shockwave Movies optimal zu nutzen, bietet Director eine Technik namens Streaming an, die es ermöglicht, ein Shockwave Movie in einem Browser zu starten bevor es komplett heruntergeladen ist. Der Rest des Movies wird dann im Hintergrund übertragen. Dabei muß in Director definiert werden, wie weit ein Shockwave Movie heruntergeladen werden muß, bevor es starten kann. So kann zum Beispiel gewählt werden, wie viele Cast Member bereits heruntergeladen sein müssen, damit eine Szene nicht ohne seine Cast Member abläuft - was allerdings grundsätzlich auch möglich ist. In einem solchen Fall werden Platzhalter statt den Cast Membern benutzt.

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.

Xtras

Über Plug-Ins (im Firmenslang "XObjects" und "Xtras" genannt), lassen sich auch von Drittanbietern Funktionen bereitstellen, die das Autorensystem "eigentlich" nicht beherrscht.


Wenn Ihnen diese Website weitergeholfen hat, dann unterstützen Sie mich bitte, indem Sie meinen Sponsor besuchen. Vielen Dank.
www.immobilienscout24.de


Quellen und Literatur-Verweise

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