hilfdirselbst.ch
Facebook Twitter gamper-media
colmans
Beiträge: 184
7. Jan 2004, 15:45
Beitrag #1 von 3
Bewertung:
(554 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Verzeichnisinhalt einlesen!?


hallo, gibt es die möglichkeit alle bilder in einem bestimmten verzeichnis ständig einzuladen, auch wenn die dateinamen nicht bekannt sind?

ich stelle mir das so vor, dass über ein netzwerk z.b. fotos in den ordner kopiert werden und director per lingo sich eine dateiliste erstellt und seine darsteller aktualisiert so alle 5 min würde ja reichen...

colmans Top
 
X
donkey shot
Beiträge: 1416
7. Jan 2004, 16:14
Beitrag #2 von 3
Beitrag ID: #64566
Bewertung:
(554 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Verzeichnisinhalt einlesen!?


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
als Antwort auf: [#64559] Top
 
donkey shot
Beiträge: 1416
7. Jan 2004, 16:35
Beitrag #3 von 3
Beitrag ID: #64571
Bewertung:
(554 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Verzeichnisinhalt einlesen!?


Wat iesch jereade noch vejessen hadde zu erleutern:

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

Dies löscht die letzten vier Buchstaben, also die Endung (zB. ".jpg") bei den Dateinamen, da Director beim Importieren diese wegläßt. Beim Löschen der members würde es also sonst Fehler geben. Das ganze könnte man auch noch verfeinern, allerdings reichte das hier für meine Zwecke.


grüsse,

Christof
als Antwort auf: [#64559] Top