flash as3.0中的自定义事件怎样实现,请写出具体的实现方法

 我来答
百度网友529104242
2012-12-26 · TA获得超过122个赞
知道小有建树答主
回答量:107
采纳率:100%
帮助的人:98.2万
展开全部
我以我写的一个MP3的例子给你讲吧:
定义一个自定义事件类CompleteEvent.as
package
{
import flash.events.Event;
public class CompleteEvent extends Event
{
public static const PLAY_COMPLETE:String = "PLAY_COMPLETE";
public static const LOAD_COMPLETE:String = "LOAD_COMPLETE";
public function CompleteEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event
{
return new CompleteEvent(type, bubbles, cancelable);
}
override public function toString():String
{
return formatToString("CompleteEvent","type", "bubbles", "cancelable");
}
}
}
在其他类中,音乐播放完时,触发PLAY_COMPLETE是这样实现的:
if(int(sc.position/1000) == int(_sound.length/1000))
{
var ce:CompleteEvent = new CompleteEvent(CompleteEvent.PLAY_COMPLETE);
dispatchEvent(ce);
}
在其他类中侦听该事件:
addEventListener(CompleteEvent.PLAY_COMPLETE,playCompleteHandler);
//上面的自定义事件类,还可以在加载完成时去触发LOAD_COMPLETE.
自定义类的好处:比如,我们需要写一个类(例如LoadPic.as)单独来完成加载,加载完后返回加载对象时,在其他类中无法侦听到LoadPic类加载完成的事件,无法知道何时已经加载完可以读取加载对象。此时,我们需要一个自定义事件,当加载完时,触发此事件让其他类侦听,以执行其他剩余步骤。

类可以直接copy,测试代码可以这样写:
this.addEventListener(CompleteEvent.PLAY_COMPLETE,function(){trace("侦听到了!");});
var ce:CompleteEvent = new CompleteEvent(CompleteEvent.PLAY_COMPLETE);
dispatchEvent(ce);
类中静态两个string属性可以根据自己喜欢命名,甚至类名,但要注意package这里,改成自己的包路径。
小小zzq
2012-12-27 · 超过27用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:67.1万
展开全部
任何一个继承自EventDispatcher的类都有dispatchEvent(event)广播自定义事件的方法。
比如:
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
this.addEventListener("KEY_SPACE",onKeySpace);
this.addEventListener("KEY_UP",onKeyUp);
function onKeyDown(event:KeyboardEvent):void
{
switch(event.keyCode)
{
case 32:
this.dispatchEvent(new Event("KEY_SPACE"));
break;
case 38:
this.dispatchEvent(new Event("KEY_UP"));
break;
}
}

function onKeyUp(event:Event):void
{
trace("按键:上");
}
function onKeySpace(event:Event):void
{
trace("按键:空格");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式