Standardmäßig verknüpft der Linker von Hollywood automatisch
alle mit den Präprozessor-Anweisungen deklarierten externen
Datendateien in das ausführbare Programm oder dem Applet. Somit
wird z.B. die Datei test.jpg
automatisch mit Ihrem ausführbaren
Programm oder Applet verknüpft:
@BGPIC 1, "test.jpg" WaitLeftMouse End |
Wenn Sie dies nicht möchten, können Sie den Tag Link
setzen,
welches von allen Präprozessor-Anweisungen für Dateien mit False
akzeptiert wird. In diesem Fall wird die von der Präprozessor-Anweisung
verwendete Datei nicht eingebunden. Der Code sieht dann so aus:
@BGPIC 1, "test.jpg", {Link = False} WaitLeftMouse End |
Manchmal können Sie auch Dateien verknüpfen, die von Ihrem Skript zur Laufzeit in Ihr ausführbares Programm oder Ihr Applet geladen werden. Betrachten Sie zum Beispiel den folgenden Code:
LoadBGPic(1, "test.jpg") LoadBrush(1, "title.png") DisplayBGPic(1) DisplayBrush(1, #CENTER, #CENTER) WaitLeftMouse End |
Standardmäßig werden test.jpg
und title.png
nicht
mit Ihrem ausführbaren Programm oder Applet verknüpft, da sie
nicht mit einer Präprozessor-Anweisung deklariert wurden, sondern
stattdessen zur Laufzeit mit LoadBGPic()
und LoadBrush() geladen wurden. Dennoch
ist es möglich, test.jpg
und title.png
mit Ihrem
ausführbaren Programm oder Applet zu verlinken. Dies kann entweder
mit der Compiler-Option ‘-linkfiles’ oder der Präprozessor-Anweisung
@LINKER erreicht werden.
Sie müssen eine Datenbankdatei an ‘-linkfiles’ übergeben. Die Datenbankdatei ist eine einfache UTF-8 Textdatei, die eine Liste von Dateien enthält, die in das Applet oder ausführbaren Programm eingebunden werden, die von Hollywood kompiliert wird. Sie müssen nur eine Datei pro Zeile in der Datenbankdatei angeben. Die Dateiangabe muss mit der Angabe übereinstimmen, die Sie in Ihrem Skript verwenden.
Wenn Sie das Konsolenargument ‘-linkfiles’ verwenden,
müssen Sie eine Datenbankdatei übergeben. Die Datenbankdatei
ist eine einfache UTF-8-Textdatei, die eine Liste von Dateien
enthält, die in das Applet oder dem ausführbare Programm eingebunden
werden sollen, das von Hollywood kompiliert wird. Sie dürfen
in der Datenbankdatei nur eine Datei pro Zeile angeben. Die
Dateiangabe muss mit der Angabe identisch sein, die Sie in Ihrem
Skript verwenden. Wenn zum Beispiel der Befehl LoadBrush(1, "data/menu.png")
in Ihrem Skript steht und Sie die Datei data/menu.png
in ihrem Applet/Programm einbinden möchten, müssen Sie sie in
die Datenbank schreiben, die Sie an ‘-linkfiles’ übergeben.
Aber Sie müssen die gleichen Angaben verwenden, d.h. Sie müssen
data/menu.png
verwenden! Die Angabe von MyScripts/CoolGame/data/menu.png
in der Datenbank funktioniert nicht! Die Angabe, die in der
Linkdatei-Datenbank und im Skript verwendet wird, muss dasselbe
sein, da Hollywood sonst nicht feststellen kann, welche Datei
geladen werden muss.
Um die Dateien test.jpg
und title.png
mit unserem
ausführbaren Programm oder Applet zu verknüpfen, muss die Datenbankdatei,
die wir an ‘-linkfiles’ übergeben, so aussehen:
test.jpg title.png |
Das ist alles! Der Hollywood-Linker verknüpft dann test.jpg
und title.png
mit dem ausführbaren Programm oder dem
Applet und der Aufruf von LoadBGPic() und
LoadBrush() im oben vorgestellten Skript
lädt test.jpg
und title.png
jeweils direkt aus
dem ausführbaren Programm oder Applet statt aus einer externen
Quelle.
Dasselbe kann mit der Präprozessor-Anweisung @LINKER erreicht werden. Der einzige Unterschied besteht darin, dass die zu verknüpfenden Dateien nicht in einer externen Datenbankdatei an Hollywood übergeben werden müssen. Sie müssen stattdessen direkt in Ihrem Skript als Teil der Präprozessor-Anweisung @LINKER gespeichert werden. Alle anderen Regeln sind die gleichen wie bei ‘-linkfiles’. Wenn Sie ‘-linkfiles’ nicht wie oben beschrieben verwenden möchten, können Sie Ihrem Skript auch die folgende Zeile hinzufügen und dasselbe erreichen:
@LINKER {Files = {"test.jpg", "title.png"}} |
Sie können dem Tag Files
der Präprozessor-Anweisung
@LINKER beliebig viele Dateien hinzufügen,
die mit Ihrem Applet oder dem ausführbaren Programm verknüpft
werden sollen. Stellen Sie einfach sicher, dass die Pfadangabe
der Dateien, die Sie an @LINKER übergeben,
mit der Pfadangabe übereinstimmt, die später im Code verwendet
wird, damit Hollywood die verknüpften Dateien den einzelnen
im Skript verwendeten Dateien korrekt zuordnen kann.
Wenn Sie viele Dateien mit Ihrem Applet oder Ihrem ausführbaren
Programm verknüpfen müssen, können Sie alle diese Dateien in
einem Verzeichnis ablegen und dann Hollywood anweisen, alles
in diesem Verzeichnis mit dem Applet oder dem ausführbaren Programm
zu verknüpfen. Dies geschieht mit der Präprozessor-Anweisung
@DIRECTORY. In der folgenden Zeile wird
beispielsweise angegeben, dass Hollywood alle Dateien im Verzeichnis
data
mit dem Applet oder dem ausführbaren Programm verknüpft:
@DIRECTORY 1, "data" |
Wenn Sie dies getan haben, können Sie mit dem Befehl GetDirectoryEntry()
auf die einzelnen Dateien im Verzeichnis data
zugreifen.
Um beispielsweise die Dateien data/test.jpg
und data/title.png
mit LoadBGPic() und LoadBrush()
zu laden, würden Sie folgenden Code schreiben:
LoadBGPic(1, GetDirectoryEntry(1, "data/test.jpg")) LoadBrush(1, GetDirectoryEntry(1, "data/title.png")) |
Die Präprozessor-Anweisung @DIRECTORY ist sehr flexibel, da sie die gesamte Verzeichnisstruktur in einem Applet oder einem ausführbaren Programm archiviert. Somit ist es möglich, dieses archivierte Verzeichnis (und alle seine Unterverzeichnisse!) so zu durchlaufen, als wären sie normal auf dem Datenträger. Siehe DIRECTORY für Details.