Inhalt - Einleitung

2.4 Die Director 7 Punktsyntax

2.4.1 Objekteigenschaften
2.4.2 Verschachtelte Eigenschaften
2.4.3 Listen
2.4.4 Sonstige Ausdrücke
2.4.5 Globale Eigenschaften

Macromedia Director beinhaltete bereits in früheren Versionen objektorientierte Ansätze. Das Grundvokabular hat sich seit Version 5 nicht geändert. In Version 6 wurden Behaviors eingeführt, die eine sehr effektive Verschmelzung von Objekten und der directortypischen grafischen Arbeitsweise ermöglichen. Director 7 wurde von Grund auf überarbeitet; als augenscheinlichstes Merkmal fällt auf, dass die aus anderen objektorientierten Programmiersprachen bekannte Punktnotation, die eine übersichtlichere Schreibweise ermöglicht, jetzt auch in Director Anwendung findet. Da die Beispiele fast durchgängig in der Punktnotation geschrieben sind, will ich kurz auf sie eingehen.1

2.4.1 Objekteigenschaften

Viele Komponenten in Director sind Objekte. Eine Liste ist ein Objekt, genauso wie ein Sprite, ein Darsteller oder ein Film. Diesen Objekten sind Eigenschaften zugeordnet, z.B. die Farbe der Bühne oder der Name eines Darstellers. Bisher war es in Lingo üblich, diese Eigenschaften mit einem vorangestellten the zu kennzeichnen, z.B.:

the member of sprite 1

the rect of the stage

Mit der Punktnotation kann man das Schlüsselwort the weglassen und stattdessen die Eigenschaft mit einem Punkt getrennt hinter das Objekt stellen. Unter Umständen müssen Parameter geklammert werden, damit Director weiß, dass sich die Eigenschaft auf den gesamten vorangegangenen Ausdruck bezieht.

Mit der Punktsyntax lassen sich zwei Aufgaben erfüllen:

1. Der Wert einer Objekteigenschaft kann gesetzt und abgefragt werden.

Variable = Objekt.Eigenschaft

Beispiel:

buehnenGroesse = (the stage).rect

Objekt.Eigenschaft = Wert

Beispiel:

sprite(1).member = "Highlight"

2. Die Methode eines Objektes kann aufgerufen werden.

Objekt.Methode()

Beispiel:

member("temp").erase()

Variable = Objekt.Methode()

Beispiel:

exemplar = (script "Uebergeordnet").new()

Es ist wichtig, dass auch bei einem Methodenaufruf ohne Argumente Klammern angegeben werden. Auf diese Weise unterscheidet Lingo zwischen einer Eigenschaft und einem Methodenaufruf. Argumente werden folgendermaßen angegeben:

Objekt.Methode(arg1, arg2, ...)

Beispiel:

member("Zeichensatz").recordfont("Geneva")

Variable = Objekt.Methode(arg1, arg2, ...)

Beispiel:

zeilenHoehe = member(2).lineheight(1)

2.4.2 Verschachtelte Eigenschaften

Eine Objekteigenschaft kann wiederum Objekteigenschaften besitzen. Jede Eigenschaft und Untereigenschaft wird dann mit einem Punkt voneinander getrennt.

sprite(1).member("Text").text

2.4.3 Listen

Eigenschaften einer Eigenschaftsliste lassen sich ebenfalls mit der Punktnotation setzen und Abfragen:

getProp(meineEigenschaftsliste, #meineEigenschaft)

ist gleichbedeutend mit

meineEigenschaftsliste.meineEigenschaft -- bei dieser Schreibweise muß der Name der Eigenschaft feststehen

oder

meineEigenschaftsliste[#meineEigenschaft] -- hier kann der Eigenschaftsname auch eine Variable sein

Werte in einer linearen Liste lassen sich mit der Angabe des Index in eckigen Klammern auslesen und setzen.

Statt

setAt(meineListe, 3, "meinNeuerWert")

kann man schreiben

meineListe[3] = "meinNeuerWert"

Das wirkt sich besonders bei mehrdimensionalen Listen positiv aus.

Statt

setAt(getAt(Schachbrett, "A"), 4), #koenig)

schreibt man

Schachbrett["A"][4] = #koenig

2.4.4 Sonstige Ausdrücke

Für folgende Ausdrücke gibt es eine gleichwertige Schreibweise in der Punktnotation:

the number of chars of myString

wird zu

myString.char.count

oder

myString.chars.count

Ebenso: the number of lines, the number of words, the number of items

Außerdem lässt sich der Ausdruck

char x to y of myString

mit der neuen Syntax folgendermaßen darstellen:

myString.char[x..y]

Ebenso: line x to y, word x to y, item x to y


Anmerkung
Für den Ausdruck the number of members of castlib gibt es keine neue Schreibweise.


2.4.5 Globale Eigenschaften

Einige Eigenschaften sind keinem bestimmten Objekt zugeordnet, sondern gelten global für die gesamte Laufzeit eines Programms, u.a. the actorList, the buttonStyle, the itemDelimiter. Da es kein Objekt für die Laufzeitumgebung gibt, muss hier weiterhin mit dem Schlüsselwort the gearbeitet werden. Es empfiehlt sich, aus Gründen der Eindeutigkeit den Ausdruck zu klammern, wenn auf seine Eigenschaften und Methoden zurückgegriffen wird, z.B.

(the actorlist).getLast()


Anmerkung
Macromedia empfiehlt, die Punktnotation und die herkömmliche Schreibweise nicht in einer Zeile gleichzeitig zu verwenden.2


Gute Zusammenfassungen der Punktnotation findet man im Netz unter folgenden Adressen:

Director[7].syntax von Zac Belado,
http://www.director-online.com/accessArticle2.cfm?id=296

Dot Syntax in a Nutshell von Bruce Epstein,
http://www.zeusprod.com/nutshell/dotsyntax.html

A Dot Syntax Lesson On Objects von Steven Sacks,
http://www.mcli.dist.maricopa.edu/director/tips/oops/035.html

2 Begrifflichkeiten und Konventionen 3 Theorie der OOP