I am creating a GUI/container that will include a number of SWF's loaded at runtime, but I am having problems passing events between them.

I've created a very simple example for testing. I have a GUI.fla and its associated class (BaseClass.as) which simply has a Loader component that loads SubClass.swf. The SubClass.fla contains a single Button component, that when clicked triggers a SubclassEvent. The BaseClass reacts to the SubclassEvent.PRESSED event and then triggers its own BaseclassEvent.UPDATE event with the new label text. I now want to Subclass to react to the BaseclassEvent and then change the button label.

I can get the BaseClass to handle the SubclassEvent (i.e. button clicked), but I cannot get the SubClass to recognise that the BaseclassEvent has been triggered. Any suggestions?

BaseClass.as
----------------------------------------------------
package {
    import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.display.Sprite;
  import SubclassEvent;
    public class BaseClass extends Sprite {
      public function BaseClass ():void {
          ldr.addEventListener(Event.COMPLETE, onLoaded);
      }
            private function onLoaded (e:Event):void {
          //trace(e.target + "  " + e.currentTarget);
e.target.content.addEventListener(SubclassEvent.PRESSED, onSubclassEvent);
      }
                private function onSubclassEvent (e:SubclassEvent):void {
          //trace(e.target + " " + e.currentTarget + " " + e._button);

          var updateEvent:BaseclassEvent = new BaseclassEvent("B+");
          dispatchEvent(updateEvent);
      }
  }
}

SubClass.as
----------------------------------------------------
package {
    import flash.display.Sprite;
  import BaseclassEvent;
    public class SubClass extends Sprite {
      public function SubClass ():void {
          this.addEventListener(BaseclassEvent.UPDATE, onBaseUpdated);
      }
            private function onBaseUpdated (e:BaseclassEvent):void {
          //trace("SubClass::onBaseUpdated: Base updated");
          btn.label = e.buttonLabel;
      }
  }
}

BaseclassEvent.as
----------------------------------------------------
package {

import flash.events.Event;
    public class BaseclassEvent extends Event
  {
      public static const UPDATE:String = "update";
      public var buttonLabel:String;
            public function BaseclassEvent(buttonLabel:String = "unknown")
      {
          super(UPDATE);
          this.buttonLabel = buttonLabel;
      }
      public override function clone():Event
      {
          return new BaseclassEvent(buttonLabel);
      }
            public override function toString():String
      {
return formatToString("SubclassEvent", "type", "bubbles", "cancelable", "eventPhase", "buttonLabel");
      }
  }
}

Thanks

Kenny
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to