不好意思。。。
主要代码如下:
public class myClass extends EventDispatcher
{
public function myClass() {
dispatchEvent(new Event("hello"));
}
}
public class main extends Sprite
{
public function main() {
var myclass:myClass=new myClass();
myclass.addEventListener("hello", myFun)
}
}
AS3.0好像遵循谁发送谁侦听的原则, 你可以考虑用一个类专门来发送和侦听事件,参考单例模式,发送事件的为这个类的一个静态属性,它持有这个类的唯一实例.因为它是静态属性,因此它是全局的(只要这个类被载入了内存中),因为即使你做一个AIR程序,其中有几个独立的窗口,也可以通过这种方式来实现窗口间的通信.
package {
import flash.events.EventDispatcher;
public class ControlCenter extends EventDispatcher {
static private var _isClosing:Boolean = false;//实例化开关
static private var _controller:ControlCenter;//类实例
//-------------------获取单例-------------------------
static public function get controller():ControlCenter {
if (ControlCenter._controler == null) {
ControlCenter._isClosing = true;
ControlCenter._controller=new ControlCenter();
ControlCenter._isClosing = false;
}
return ControlCenter._controler;
}
//-------------------获取单例-------------------------
//-------------------构造函数-------------------------
public function ControlCenter() {
if (ControlCenter._isClosing == false) {
throw new Error("ControlCenter:无法实例化");
}
}// constructor code
//-------------------构造函数-------------------------
}//class
}//package
------------------------------------在下面这个类中发送事件---------
package{
public class DispatchHere{
public function DispatchHere(){
ControlCenter.controller.dispatchEvent(new Event("thisIsForOnlyTest"))
}// constructor code
}//class
}//package
----------------------------在下面这个类中接收事件------------------
package{
public class ListenHere{
public function ListenHere(){
ControlCenter.controller.addEventListener("thisIsForOnlyTest",eventHander)
}//constructor cod
private eventHander(e:Event):void{
do sth. here
}
}
}//package
如果还有什么疑问可以追问,会的我尽量回答