Wie kann ich Versand Sie ein benutzerdefiniertes Ereignis aus einer actionscript-3-Klasse und hören Sie es im document root?

Ich baute eine benutzerdefinierte event-dispatcher übergibt Variablen. Ich versende die Veranstaltung und dann versuche ich zu hören, für den Fall in meinem document root, aber ich habe nie das Ereignis erhalten. Wie kann ich die Blase, die Veranstaltung bis zu meinem document-Klasse?

addEventListener(CustomVarEvent.pinClicked, pinClickedHandler);

function pinClickedHandler(e:CustomVarEvent) {
        trace("main says " + e.arg[0] + " clicked");//access arguments array
    }

package zoomify.viewer
{
import com.maps.CustomVarEvent;
    protected function hotspotClickHandler(event:MouseEvent):void {
        var hotspotData:Hotspot = hotspotsMap[event.currentTarget] as Hotspot;
        trace(hotspotData._name + " was clicked");
        /*if(hotspotData) {
            navigateToURL(new URLRequest(hotspotData.url), hotspotData.urlTarget);
        }*/
        dispatchEvent(new CustomVarEvent("pinClicked",true,false,hotspotData._name));
    }
}
package com.maps
{
//Import class
import flash.events.Event;
//CustomVarEvent
public class CustomVarEvent extends Event {
    public static const pinClicked:String = "pinClicked";
    //Properties
    public var arg:*;
    //Constructor
    public function CustomVarEvent(type:String, ... a:*) {
        var bubbles:Boolean = true;
        var cancelable:Boolean = false;
        super(type, bubbles, cancelable);
        arg = a;

    }

    //Override clone
    override public function clone():Event{
        return new CustomVarEvent(type, arg);
    };
}


}

Den pinClicked Ereignis, das ausgelöst wird, ist zwei Ebenen tief geschachtelte Klassen. Ich fügen Sie eine Instanz der Klasse ZoomifyViewer auf die Bühne. ZoomifyViewer fügt und Instanz ZoomGrid auf die Bühne und ZoomGrid das Ereignis auslöst.

Wenn ich das gleiche Ereignis-listener und-handler-Funktion direkt in meine ZoomGrid-Klasse (gleiche Klasse, die das Ereignis ausgelöst wurde), dann die listener und eine Ereignisprozedur richtig funktionieren. Allerdings, wenn der listener und-handler werden in einer übergeordneten Klasse oder auf der Bühne, habe ich keine Antwort erhalten.

Ist ein dispatcher notwendig, um die Blase zu Blase?

Außerdem sind diese beiden Zeilen funktionell identisch auf der Grundlage der ständigen pinClicked definiert ist, in meinem CustomVarEvent?

 dispatchEvent(new CustomVarEvent(CustomVarEvent.pinClicked, hotspotData._name));

 dispatchEvent(new CustomVarEvent("pinClicked", hotspotData._name));

InformationsquelleAutor Bryan | 2009-04-14

Schreibe einen Kommentar