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