自定义事件 实例讲解

首先我们定义一个简单的类myClip

package {
import flash.display.Sprite;
public class myClip extends Sprite {
public function myClip() {
addEventListener(MouseEvent.CLICK,clickHander);
}
private function clickHander(evt:MouseEvent):void {
trace("click");
}
}
}

这个类很简单,只要我们在舞台创建一个影片剪辑,把他的 连接属性 中的类设置为myClip , 单击这个影片剪辑就可以输出一个click.

如何让我们的这个影片剪辑被单击的时候可以执行舞台上的一个函数,比如

function listen_clipEvent() 呢?这个时候就需要用我们舞台上的这个函数监听myClip的事件了。

既然要监听myClip的事件,我们就创建一个myClip的事件类:clipEvent

package {
import flash.events.Event;
public class clipEvent extends Event {
public static const CLIP_CLICK:String="clip_click";
private var _mm:String;
public function clipEvent() {
super(CLIP_CLICK);
}
public function get M() {
return _mm;
}
public function set M(a:String) {
_mm=a;
}
}
}

第2行我们引入了Event类,为了集成它用.

第4行我们定义了事件类的一个类型,你是可以自定随便定义的哦,就相当于MouseEvent的CLICK.

第5行定义我们自定义事件的一个属性,通过这个属性就可以访问触发事件类的某些属性了,比如event.targe,这是系统定义的.

第7行我们在构造函数中定义了CLIP_CLICK类型为默认类型。

回到我们的自定义类,修改代码:

package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.EventDispatcher;
public class myClip extends Sprite {
public function myClip() {
addEventListener(MouseEvent.CLICK,clickHander);
}
private function clickHander(evt:MouseEvent):void {
trace("click");
var _clipEvent:clipEvent=new clipEvent();
_clipEvent.M="wangyan";
dispatchEvent(_clipEvent);
}
}
}

我们添加了几行代码。

11行我们声明了一个自定义类的对象,12行对他的属性复制,你当然可以通过自定义类的属性给自定义事件

的这个属性赋值.

13行我们将我们的自定义事件调度到事件流中,只有这样才可以被监听哦。为了能将事件调度到事件流中,我们在第4行引入了EventDispatcher类。

回到主场景.

function listen_clipEvent(evt:clipEvent) {
trace("hello"+evt.M);
}
abc.addEventListener(clipEvent.CLIP_CLICK,listen_clipEvent);

我们在把主场景的函数做了修改,首先添加一个参数evt:clipEvent,因为,如果某个函数想监听一个事件,需要添加一个对象作为参数。

当然你可以在函数中访问自定义事件的属性。

abc是谁??它就是我们链接属性的类被设成myClip的影片剪辑,那样他就继承了myClip,相当于myClip的一个对象了。

我们让listen_clipEvent自定义函数监听我们abc这个myClip类对象的CLIP_CLICK类型的clipEvent事件。这个是在第4行完成的。

好的,ctrl+回车。

是不是输出

click
hellowangyan

click是myClip类对象abc的单击事件发出的,而hellowangyan是我们的舞台上的监听abc对象的CLIP_CLICK类型的自定义clipEvent事件的函数listen_clipEvent发出的。

posted on 2011-01-09 18:22  jinglikeblue  阅读(216)  评论(0)    收藏  举报

导航