Pixelagents Blog

Flash Actionscript: Prüfen, ob die Maus (mouse) auf der Bühne (stage) ist oder den Bereich des swf verlassen hat.

von Jerry am Mittwoch, 11. April um 23:40 - 4,929 aufgerufen

Ein altes Problem, mit denen Flasher immer wieder zu kämpfen hatten, wurde nun in AS3.0 gelöst: da gibt es einen Event, der ausgelöst wird, wenn die Maus die Stage verlassen hat. Wie ist es aber in Actionscript und Actionscript 2.0? Eine nur selten zufrieden stellende Möglichkeit war es, einen großen unsichtbaren Button über die ganze Bühne zu legen. Allerdings kollidierte er stets mit anderen Buttons. Außerdem wurde der Event nicht ausgelöst (oder sagt man hier “das Ereignis nicht gebroadcastet“?), wenn die Maus zu schnell aus dem Flashbereich gezogen wurde.

Eine andere Lösung muss her! Der Trick: Man macht sich die Geschwindigkeit der Maus zunutze (aktuelle Position minus alte Position) und errechnet daraus, wo die Maus als nächstes sein wird! Wird sie als nächstes außerhalb der Bühne sein, wird der Event ausgelöst. Hier einmal ein Beispiel zur Praxis:


// mouse on stage detection
var predX:Number // prediction, also Vorhersage der X-Position
var predY:Number
var oldX:Number; // alte X-Position
var oldY:Number;
var offStage:Boolean; // Schalter, ob die Maus auf der Bühne ist oder nicht…

In einem onMouseMove-Event wird die “Prediction” errechnet und vorher noch geschaut, ob die Maus gerade wieder in die Stage eingetreten ist:


onMouseMove = function()
{
if (offStage)
{
trace(”Maus ist wieder auf der Stage!”);
}

offStage = false;

predX = _root._xmouse – oldX;
predY = _root._ymouse – oldY;
oldX = _root._xmouse;
oldY = _root._ymouse;
};

In dem onEnterFrame-Event wird nun geprüft, ob die nächste Mausposition die Maße der Bühne verlässt und ggf. die Variable offStage auf true gestellt.


onEnterFrame = function ()
{
if ((_root._xmouse + predX) >= Stage.width
|| (_root._ymouse + predY) >= Stage.height – 10
|| _root._xmouse + predX < = 0
|| _root._ymouse + predY <= 0)
{
trace("Maus hat die Stage verlassen!");
predX = 0;
predY = 0;
offStage = true;
}
};

Ich hoffe, der Eine oder Andere wird sich über die Lösung dieses Problems freuen! Ich habe mich sehr gefreut… ;-)

Vielleicht gibt es ja sogar noch eine andere Lösung – dann immer her damit!

Tags:

Mozilla Firefox & Flash: abspeichern von .swf Dateien

von soprano am Dienstag, 18. Juli um 18:19 - 36,469 aufgerufen

Wer kennt es nicht? Man will eine Flash-Datei speichern und wiedereinmal muss man sich durch den Quellcode wühlen auf der Suche nach dem richtigen <embed>. Ein Plugin oder eine Extension sucht man vergebens.

Jetzt gerade hatte ich mal wieder keinen Bock drauf und habe ein wenig rumgeklickt und rumgefragt. Es sind gleich 2 brauchbare Lösungen dabei herausgekommen.

1. Flash Dateien mit dem Downloadmanager abspeichern

Das Bildchen zeigt es ja schon an. Downloads auf und auf das Rädchen klicken, dann “Eingebettete Dateien downloaden”. Nach hat man die Möglichkeit nacheinander alle .swf Dateien runterzuladen.

Abspeichern von Flash Dateien mit Hilfe des Downloadmanagers

Voraussetzung ist die All-in-one-Sidebar Extension für den Firefox, aber die wird ja eh bei den meisten von Euch installiert sein!

2. Flash Dateien über die Seiteninformationen abspeichern

Extras > Seiteninformationen > Medien-> .swf auswählen-> speichern unter
oder auch übers Rechts-Klick-Context-Menü (siehe Abbildung)

flash_save_seitenmanager1.png

hier könnt ihr dann die Datei runterladen …

flash_save_seitenmanager2.png

SAVE IT!!!

Ich persönlich preferiere die erste schnellere Variante :-)

Tags: