Das folgende (Film-)Skript habe ich mal geschrieben, um Bilder in einem Ordner "images", der sich im gleichen Verzeichnis, wie der Projektor befindet, zu importieren:
global picList, myEr, myCnt
on startMovie
-- myList ist eine Ersatzliste für Bilder, die benutz werden, falls der Bilderordner leer ist
myList = ["fg_001", "fg_002", "fg_003", "fg_004"]
-- picList ist die Bilderliste, die noch leer ist und zuvor schon als globale Variable definiert wurde
picList = []
-- myCnt ist ein Zähler, myEr eine Variable, die später zur Überprüfung gebraucht wird (s.u.)
myCnt = 0
myEr = 0
-- Diese Schleife kuckt in den Ordner "images" und prüft 100 Mal (kann man natürlich ändern, aber ich dachte hundert Bilder Max. sind das, was den Arbeitsspeicher nicht überlastet, muß man aber ausprobieren), ob ein Bildname vorhanden ist. Das dient, dazu, die Anzahl der Bilder zu ermitteln. Ist der Bildname nicht "" (leer), dann erhöt sich der Zähler.
repeat with i = 1 to 100
myName = getNthFileNameinFolder(the moviePath & "images:", i)
if myName <> "" then
myCnt = myCnt + 1
end if
end repeat
-- Diese Schleife importiert soviele Bilder, wie im Ordner sind ("myCnt"). Es wird nach einer leeren Stelle in der CastLib gesucht und das Bild importiert. Ich habe eine Abfrage eingebaut, die nur .jpg-Dateien zuläßt, aber die könnte man auch für andere Formate/Namenskonventionen erweitern. Die Bildernamen werden zur picList hinzugefügt.
repeat with i = 1 to myCnt
myName = getNthFileNameinFolder(the moviePath & "images:", i)
if myName contains ".jpg" then
myMemb = findEmpty(member 1)
importFileInto member myMemb, the moviePath & "images:" & myName
myN = myName
delete the last Char of myN
delete the last Char of myN
delete the last Char of myN
delete the last Char of myN
append picList, myN
end if
end repeat
-- wenn keine Bilder vorhanden sind, werden die eingebauten Bilder (s.o.) verwendet:
if picList.count = 0 then
picList = myList
myEr = 1
end if
end startMovie
-- beim stoppen des Films werden die Bilder wieder gelöscht, indem alle members, die in der picList vorhanden sind, gelöscht werden:
on stopMovie
repeat with i=1 to picList.count
if myEr = 1 then
nothing
else
erase member picList
end if
end repeat
end stopMovie
Du kannst das ganze für Deine Zwecke optimieren, indem Du das ganze zum Beispiel in eine zeitgesteuerte Prozedur einbaust. Allerdings würde ich immer erst alle Bilder löschen und dann neu importieren, nicht daß das ganze irgendwann abstürzt. Wahrscheinlich müßte man das alles testen und notfalls noch ein paar Zeilen fürs Speichermanagement hinzufügen.
Einen Pferdefuß hat die Sache: der Befehl "getNthFileNameinFolder" gilt aus Sicherheitsgründen nicht in Shockwave-Filmen, da man sonst einfach die Festplatte des Internet-Users auf Dateien durchsuchen könnte. Ich habe schonmal angefangen, ein Skript zu schreiben, das ohne den Befehl auskommt, bin aber noch nicht weit damit gekommen. Vielleicht irgendwann einmal.
Ansonsten erstmal viel Spass damit,
grüsse,
Christof