|
Den symbol table nutzen
Bruce Epsteins Ausführungen
zum Director-internen Symbol Table (LIAN Seite 521-525), insbesondere
seine Skriptlösung, um zu erkennen, ob ein Symbol (das ist
z.B. ein Lingo-Begehl, ein Darstellertyp, ein Variablenname, ein
Lingo-Symbol, vom Anwender definierte Symbole, Handlernamen etc...)
in Directors Symbol-Inventar existiert, lassen sich mit Einschränkungen
ebenfalls für einen Xtras-Test nutzen. Das folgende Skript
ermittelt, ob ein Symbol bereits existiert:
on existingSymbol
symbolName
global gInitialSymbolCount
-- ein Symbol neu erzeugen, um die Länge des
Symbol
-- Tables
zu ermitteln
if voidP(gInitialSymbolCount) then
newsymbol = symbol("uniqueSymbol"
& the ticks)
gInitialSymbolCount = (newSymbol + 0)
end if
-- den Ort des zu testenden Symbols mit gInitialSymbolCount
-- vergleichen
checkSymbol = (symbol(symbolName) + 0)
if checkSymbol < gInitialSymbolCount then return
TRUE
else return FALSE
end
Erst wird ein neues, auf
jeden Fall unikes Symbol erzeugt, um die Länge des Symbol Tables
zu ermitteln (das neue Symbol ist auf dem letzten benutzten Platz
des Tables).
Falls der Parameter symbolName,
der als String übergeben wird,
ein vordefiniertes
Director-Symbol ist, erhalten wir eine Position kleiner als gInitialSymbolCount;
falls es noch nicht im Symbol Table vorhanden war, wird es durch
den test neu erzeugt und seine Position wird größer sein
als gInitialSymbolCount.
Es gibt gute Gründe,
diesen Code NICHT für einen Xtras-Check zu benutzen. Wird nämlich
in irgendeinem Zusammenhang das zu prüfende Symbol vor der
Prüfung benutzt (z.B. als Name einer Globalen, oder in einer
früheren Session), so ist es vorhanden - und die Prüfung
ergibt TRUE, auch wenn das Xtra nicht vorhanden ist. Der Beispielfilm
enthält diese Option for fun, nicht als ernstgemeinter
Xtratest!
Es funktioniert mit og.
Einschränkung, wenn man einen Handler-Namen (bei Lingo-Xtras)
oder einen Darstellertyp (bei Asset-Xtras) als Testparameter übergibt.
Dieser Parameter muß ein String sein!
put existingSymbol
("flash")
-- 1
put existingSymbol ("vectorshape")
-- 1
put existingSymbol ("closed") -- eine #vectorshape-Property
-- 0 -- bei Asset-Xtras Darstellertyp
nutzen!!
put existingSymbol ("ExportMedia") -- Funktion d. JavaConvert-Xtras
-- 1
ich sehe allerdings keinen
Weg, mit dieser Methode Agent-Xtras oder MIX-Xtras wie "Mix
Services", "JPEG Export", "Image Translator
Helper" zu überprüfen.
|