von Flash zu Director kommandieren

mardazad

Erfahrenes Mitglied
Hi,
weiß jemand wie ich folgendes Lingoscript in Flash so auf einen Button lege, daß das importierte swf den Directorfilm steuert? Ich hab von Director nicht die geringste Ahnung und muß dummerweise schnellstmöglich sowas hinkriegen...

on mouseDown
repeat while the stillDown sprite(4).movieRate = 2
end repeat


sprite(4).movieRate = 1
end


Danke schön schonmal...
 
Folgenden Lingocode in ein Filmskript:
Code:
on myEventFromFlash
    repeat while the stillDown
        sprite(4).movieRate = 2
    end repeat
    sprite(4).movieRate = 1
end
Aufruf der Methode (des Handlers) aus dem Flash-Sprite per ActionScript:
Code:
getURL("lingo:myEventFromFlash");
oder wenn dir der Stil besser gefällt, dann so:
Code:
var theLingoHandler = "lingo:myEventFromFlash";
getURL(theLingoHandler);

Hinweis:
repeat while ist in deinem Anwendungsfall die ungünstigste der möglichen Lösungen,
da der gesamte Director-Movie und seine Funktionalität in der Schleife gefangen bleibt,
solange die Bedingung stillDown TRUE bleibt.
Es gibt keinen Grund, die Sprite-Eigenschaft movieRate bei jedem Schleifendurchlauf
erneut auf den selben Wert zu setzen. Lieber einmal setzen, wenn "mouseDown" und
das "mouseUp" abfangen, um die movieRate wieder zurückzusetzen.
Ich empfehle dir also dringend, eine andere Lösung zu finden!

Gruß
Martin
 
Hi Martin,
danke schön...
Ich habe den Code aus dem Directorforum. Da stand es geht?! Ich versuche von einem swf aus ein Quicktime in Director zu steuern. Der Code soll auf den Vorspulenbutton, so daß der Film schneller spult wenn man den Button gedrückt hält... Weißt du da Rat?

Immerhin habe ich, glaube ich, das Prinzip Flash/ Director verstanden. Also die Lingoscripte kommen immer als Filmscript im Director auf das Swf. Mit getURL im Swf wird einfach nur das Script in Director gestartet. Ich muß also in Flash nichts weiter machen, als den Startschuß für Director zu definieren... stimmt doch?
Ich habe mir zwar die hauseigenen Tuts von MM zu Gemüte geführt, aber nicht so ganz gerafft warum was wie geht.

Gruß
 
Hi nochmal,

klar weiß ich Rat. :)
Der Rat steht ja schon in meiner letzten Antwort drinne.
Es funktioniert schon so, wie du es machst. Ich wollte dich nur darauf hinweisen, dass
auf deine Art der Programmierung (per repeat while) der gesamte Director Movie kein
anderes Script ausführen kann, solange die Maustaste auf dem Button gedrückt bleibt.
Deshalb hab ich dir geraten, es anders zu lösen.

Am besten mit 2 Eventhandlern:

1. Schnell abspielen wenn Maustaste runtergedrückt, normal abspielen wenn Maustaste wieder hochgeht:
PHP:
-- wenn Maustaste gedrückt wird
on myMouseDownEventFromFlash
    sprite(4).movieRate = 2
end

-- wenn Maustaste losgelassen wird
on myMouseUpEventFromFlash
    sprite(4).movieRate = 1
end

Nu musst du nur noch in Flash (ich kann kein ActionScript) die Events mouseDown und
mouseUp auf dem Button abfangen und jeweils den zugehörigen Handler im Lingo Filmscript aufrufen.
Damit befindet sich der Programmfluss zu keiner Zeit in einer Schleife.
PHP:
// wenn Maustaste gedrückt wird
my_btn.onPress = function() {
    var theLingoMouseDownHandler = "lingo:myMouseDownEventFromFlash";
    getURL(theLingoMouseDownHandler);
}

// wenn Maustaste losgelassen wird
my_btn.onRelease = function() {
    var theLingoMouseUpHandler = "lingo:myMouseUpEventFromFlash";
    getURL(theLingoMouseUpHandler);
}
Diese beiden Actionscripts also richtig einbauen. Wie das geht kann ich dir als
Nicht-Flasher leider nicht sagen, aber das wirst du bestimmt selbst rausfinden.
Gut möglich, dass mein ActionScript-Geschreibsel falsch ist. ;)

Gruß
Martin

[EDIT] Habe den Flüchtigkeitsfehler ausgebessert. Danke für den Hinweis. :)
 
Bis auf einen kleinen Flüchtigkeits(Schreib)fehler ist alles in Sahne:

PHP:
// wenn Maustaste gedrückt wird
my_btn.onPress = function() {
    var theLingoMouseDownHandler = "lingo:myMouseDownEventFromFlash";
    getURL(theLingoMouseDownHandler);
}
so is besser ...

Grüsse
B
 
Danke für den Hinweis auch hier nochmal, aber ich hab sogar NOCH einen Fehler bzw.
Mangel entdeckt. Aber ok, sowas passiert im Eifer meines Helfersyndroms.

Und zwar folgendes:
Wir fangen in Flash 2 Events ab ( onPress, onRelease ) aber was ich für die perfekte
Funktionalität vergessen habe ist das Event, wenn jemand bei gedrückter Maustaste
den Button verlässt. Demnach muss also der ActionScript Code wie folgt erweitert werden:

PHP:
// wenn Maustaste gedrückt wird
my_btn.onPress = function() {
    var theLingoMouseDownHandler = "lingo:myMouseDownEventFromFlash";
    getURL(theLingoMouseDownHandler);
}

// wenn Maustaste losgelassen wird
my_btn.onRelease = function() {
    var theLingoMouseUpHandler = "lingo:myMouseUpEventFromFlash";
    getURL(theLingoMouseUpHandler);
}

// wenn der Button bei gedrückter Maustaste verlassen wird
my_btn.onDragOut = function() {
    var theLingoMouseUpHandler = "lingo:myMouseUpEventFromFlash";
    getURL(theLingoMouseUpHandler);
}

Auch hier gilt wieder:
Ich spreche kein ActionScript, also bitte Nachsicht falls nötig.
Aber der Gedanke dürfte klar sein, was gefehlt hat. ;)

Gruß
Martin
 
Zurück