|
markerAbfrage
>> Kann mann irgendwie abfragen, ob ein bestimmter Marker im
>> aktuellen oder auch anderen Film existiert.
>>
>im aktuellen Film ist's einfach...
>
>-- Willkommen bei Director --
>put label("michgibts")
>-- 2
>put label("michgibtsnicht")
>-- 0
>
>im anderen Film ... aehm, kompliziert. keine Idee.
>
Eine Idee haette ich schon, aber etwas kompliziert ist es wirklich.
Du muesstest den anderen Film in einem unsichtbaren MIAW oeffnen, pausieren,
dann kannst du das Miaw mit tell untersuchen/ befragen und dann musst du es
mit forget wieder loswerden, damit du ggf hinspringen kannst. Klingt kompliziert?
Kommt noch besser: Wenn dieser andere Film einen handler 'on startMovie' hat,
wird der beim oeffnen des Miaw ausgefuehrt. Nun stecken grade hier oft heftig
viele aktionen und es kann leicht zu unerwuenschten Nebenwirkungen kommen.
Da hilft nur eine globale Variable ganz oben im StartMovie handler, die
dessen Ausfuehrung, wenn TRUE, abbricht.
In allen 'on startMovie' aller Filme, die fuer so eine Abfrage fit sein
sollen, oben die folgenden Zeilen:
on startmovie
-- sei passiv, wenn Flag TRUE
global gPassivMode
if gPassivMode then return
...
und hier die Abfrage des marker:
on checkMarkerExists dMovieName, dMarker
-- parameter pruefen
if not stringP(dMovieName) then return #keinFilmBenannt
if not stringP(dMarker) then return #keinMarkerBenannt
-- startmovie blockieren
global gPassivMode
set gPassivMode = TRUE
-- Film befragen
set dWin = window(dMovieName)
tell dWin
pause
set result = label(dMarker)
end tell
-- fertig
forget dWin
set gPassivMode = FALSE
return result
end
und im message fenster sieht das dann so aus:
-- Welcome to Director --
put checkmarkerExists()
-- #keinFilmBenannt
put checkmarkerExists("base23.dir")
-- #keinMarkerBenannt
put checkmarkerExists("base23.dir","gugelhupf")
-- 0
put checkmarkerExists("base23.dir","New Marker")
-- 5
Naja, soo kompliziert ist es dann doch wieder nicht.
|