5.10 Ermitteln der Verhalten zu einem Sprite mit the scriptInstanceList of sprite und the scriptList of sprite

Mit der Eigenschaft the scriptInstanceList of sprite erhält man im einem laufenden Film eine Liste der Verhaltensinstanzen eines bestimmten Sprites. Diese hat die Form einer linearen Liste und enthält die Verhaltensreferenzen.

put sprite(14).scriptInstanceList
-- [<offspring "hot/nothot & cursor-skript" 1 112194c>, <offspring "mouseup an Szene-Objekt" 1 1121960>]

Da die Liste nur Instanzen enthält, ist sie leer, wenn ein Film gerade nicht läuft. Der Liste können auch neue Instanzen hinzugefügt werden, sie muss dann aber schon mindestens einen Eintrag enthalten. Einem Sprite, dem noch kein Verhalten zugeordnet wurde, kann also kein Verhalten hinzugefügt werden. Zu beachten ist außerdem, dass die Änderungen der scriptInstanceList nicht von bleibender Dauer sind, sondern nur bis zum Ende des Sprites gelten.

Diese Eigenschaft lässt sich beispielsweise dazu verwenden, eine Methode eines bestimmten Verhaltens aufzurufen ohne gleichlautende Methoden des selben Sprites versehentlich mit anzusprechen. Folgende Zeilen rufen die Methode setDebugMode() des zweiten Verhaltens von Sprite 20 auf, ohne dass eine gleichlautende Methode im ersten Verhalten zu einem Konflikt führt:

thisInstance = sprite(20).scriptInstanceList[2]
call(#setDebugMode, thisInstance, TRUE)

Im Gegensatz zu the scriptInstanceList enthält the scriptList of sprite nicht die Skriptinstanzen, sondern die Skriptdarsteller und Initialisierungseigenschaften eines Sprites, also die Informationen, die im Verhaltensinspektor angezeigt werden.

put sprite(14).scriptList
-- [[(member 15 of castLib 3), "[#mSpriteCursor: "Finger"]"], [(member 13 of castLib 3), "[#mSymbol: #leonore]"]]

In Director 7 lässt sich die Skriptliste nicht bearbeiten, sie dient nur zu Informationszwecken.


Bemerkung
In Director 7 ist the scriptList of sprite eine undokumentierte Eigenschaft; sie hat mit Version 8 Einzug in den Lingo-Wortschatz gehalten. Zusätzlich ist es möglich geworden, dieser Liste mit dem Befehl setScriptList eigene Werte zuzuweisen (siehe "Anhang: Neue Befehle in Director 8").


5.9 Senden von Nachrichten mit sendSprite und sendAllSprites 5.11 Kommunikation zwischen Verhalten und Objekten