Hi,
I have a flex application that creates a globalVO object upon
initialization.
When a change occurs in my globalVO I manually dispatch an event.
In the init function of my main application I add an event listener for
my custom event. When the application runs I can see that the event is
being dispatched, but my main application doesn't pick it up.
Is there a way to assign a target for the event dispatcher? ie:
dispatcher.target = main?
Help please.
Here is a sample of my code - I cut it up to demonstrate what I'm doing.
Main.mxml
import com.test.reports.events.GlobalChangeEvent;
import com.test.reports.vo.GlobalVO;
public var globalVO:GlobalVO;
private function init():void{
this.addEventListener("globalChangeEvent",
globalChangeEventHandler);
globalVO = new GlobalVO();
//test the globalChangeEventHandler
//when someValue is set it will dispatch my custom event
globalVO.someValue = "test";
}
private function globalChangeEventHandler():void{
//this function never gets called
Alert.show("I heard the global change event");
}
GlobalVO.as
package com.test.reports.vo
{
import com.test.reports.events.GlobalChangeEvent;
import flash.events.EventDispatcher;
public class GlobalVO
{
private function dispatchChangeEvent():void{
var eventObj:GlobalChangeEvent = new
GlobalChangeEvent(this, "globalChangeEvent");
var dispatcher:EventDispatcher = new EventDispatcher();
dispatcher.dispatchEvent(eventObj);
}
public function set someValue(val:String):void{
dispatchChangeEvent();
}
}
}
GlobalChangeEvent
package com.test.reports.events
{
import flash.events.Event;
import com.test.reports.vo.GlobalVO;
public class GlobalChangeEvent extends Event
{
public var globalVO:GlobalVO;
//constructor
public function GlobalChangeEvent(globalVO:GlobalVO,
type:String){
//TODO: implement function
super(type, true);
this.globalVO = globalVO;
}
override public function clone():Event{
return new GlobalChangeEvent(globalVO, type);
}
}
}