2009-07-14 4 views

Antwort

5

Eine gängige Lösung für dieses Problem in ActionScript 2 ist der häufig als "Blocker" bezeichnete Clip. Erstellen Sie einfach einen Movieclip, der aus einer vollständig transparenten Füllung besteht. Dann können Sie diesen Movieclip beliebig platzieren und nach Bedarf skalieren. Schließlich ordnen Sie dieses Clips ist ein Dummy-Ereignis Maus und schalten Sie es der Gebrauch der Hand cursor - wie folgt aus:

blocker.onRelease = function() {}; 
blocker.useHandCursor = false; 

Solange dieser Clip über dem geladenen Inhalt ist, wird es keine Mausereignisse absorbieren.

+0

Ich mag diese Idee und ich fügte einen Movieclip hinzu, der über dem swf ist, den ich lade, aber sogar nach jedem mousebezogenen Ereignis kann ich an den Clip denken, der noch meine onrelease Ereignisse fängt. – Jon

+0

Nun, ich bin sicher, dass diese Technik funktioniert - ich benutze sie die ganze Zeit! Sie müssen sicherstellen, dass der Movieclip sichtbar ist (blocker._visible = true). Vielleicht möchten Sie der Füllung eine tatsächliche Farbe hinzufügen, um sicherzustellen, dass Sie tatsächlich über der geladenen SWF liegen, da es einfach ist, die Tiefe mit AS2 falsch zu ermitteln. –

+0

Ja, ich habe es auch benutzt. Ich habe meinen Blocker-Clip mit einem großen blauen Rechteck versehen, so dass ich sicher bin, dass er geladen ist und die richtige Breite und Höhe hat. Wenn Sie interessiert sind, sind die Vermögenswerte, die mir die größten Kopfschmerzen bereiten, von Print2Flash. – Jon

0

Erstellen Sie Ihre Event-Handler in dem Moment, in dem es tatsächlich benötigt wird, wie zum Beispiel, wenn die Schaltfläche oder das Objekt auf den Rahmen kommt.

Wenn die Mausklicks des Ereignis-Listeners bereits erstellt wurden, können Sie den Listener jederzeit in ActionScript entfernen.

myButton.removeEventListener (MouseEvent.CLICK, handleMouseClick);

Und dann haben eine Funktion oder ein verwandtes Logik der Maus Event-Handler später wieder einzuschalten

myButton.addEventListener (MouseEvent.CLICK, handleMouseClick);

„handleMouseClick“ ist die eigentliche Funktion und Code, der mit der Maus etwas nicht klicken

Eine andere Lösung eine globale boolean Flag in Actionscript auf dem Hauptzeitleiste festgelegt ist, und dann, die innerhalb der Funktionen der Maus umgehen Funktionalität können Sie zuerst nach dem Boolean suchen, bevor Sie etwas tun. Das Mausereignis wird weiterhin erstellt und an Ihren Ereignishandler übergeben, kann aber abhängig vom Status Ihres booleschen Flags selektiv ignoriert werden.

+0

Ich habe keine Kontrolle über das ActionScript des zugrunde liegenden Films. Es macht sein eigenes Ding und ich möchte es davon abhalten, es zu tun. – Jon

+0

Dieser Code ist auch AS3-spezifisch und funktioniert nicht mit AS2. –

0

Wie die anderen Antworten angeben, besteht die Möglichkeit, das Klicken auf Ereignisse beim Erreichen einer untergeordneten SWF-Datei zu stoppen, darin, ein Blockerobjekt davor zu platzieren. Der Schlüssel ist, dass der Blocker eine Taste ist. Ein einfacher Clip mit einer Form lässt weiterhin Klicks auf AS2-Kind-SWFs zu.

Die Blockierungstaste wird benötigt, auch wenn entweder ein AS2- oder AS3-Elternteil eine untergeordnete AS2-SWF-Datei lädt.

0

Sie können auch eine Variable verwenden und überprüfen, ob der Status "0" geändert wird, wenn die ClickEvent-Funktion aufgerufen wird.

var lockScreen: int = 0;

Set lockScreen = 1, wenn Sie Veranstaltungen und setzen wieder auf Null etwas nach tun ignorieren möchten klicken. Zumindest funktioniert es für mich :)

Verwandte Themen