学习笔记:Flash中的广播器和监听器

      技术迷 2004-7-1 13:24
今天上午监考,趁着有空,真正地研究了一番以前在闪吧论坛下的一篇文章:《Flash事件模型核心:监听器和广播器》

文章是闪吧论坛游戏技术版的版主AOL贴出的:
Listeners(监听器)和ASBroadcaster(AS广播器)
Author:Santiago Esperanza
translater:AOL
版本:Flash MX
级别:中级
来源:www.flashguru.co.uk

链接:http://www.flash8.net/bbs/dispbbs.asp?boardid=10&star=1&replyid=284258&id=104223&skin=0&page=1

以下是我的一些心得:
1、广播器和监听器顾名思义,你就可以理解它的意义。
Flash中已经定义好的广播器有Key\Selection\Mouse\Stage\TextField以及Flash本身。

2、一个影片剪辑被默认注册为Mouse对象的监听器,但不是Key对象的监听器。
这一点我没有试验过,不太明白是怎样一回事。

3、为一个Flash中的广播器定义一个新的监听器,过程一般为
①建立新对象②定义为监听器③定义函数④分配函数⑤触发执行
代码为:
luscky = new Object();//建立一个普通对象luscky
Mouse.addListener(luscky);//为广播器Mouse添加监听器luscky
//定义函数mclick
mclick = function () {
    trace("good good study,day day up!");
};
luscky.onMouseDown = mclick;//当luscky监听到Mouse发出的广播onMouseDown时,运行函数mclick
//运行时点击Mouse即可触发mclick函数

4、可以用AsBroadcaster定义广播器并进行相关监听器的操作:
它含有三个方法和一个属性,
AsBroadcaster.initialize(广播器);
广播器.addListener(监听器);
广播器.removeListener(监听器);
广播器.broadcastMessage("事件");
广播器._listeners;

5、如1所述那些在Flash中已经定义好的广播器,可以认为也是用上述方法定义的。
例如Mouse对象,可以认为在Flash中用AsBroadcaster.initialize(Mouse)做了自动的初始化。
它具有addListener和removeListener方法让用户添加与删除监听器。
当你对鼠标做相应操作时,broadcastMessage方法将自动在后台执行,例如当你按下鼠标时,就相当于执行了Mouse.broadcastMessage("onMouseDown"),此时Mouse的监听器就会监听到这个事件并执行相应的操作。

6、我们也可以自定义广播器和监听器。
代码为:
国王={};
仆人={};
AsBroadcaster.initialize(国王);
国王.addListener(仆人);
仆人.onKingScream=function(){
    trace("国王在叫我了……");
    trace("我马上就来!");
}
国王.broadcastMessage("onKingScream");

呵呵

另外,晚上在闪吧论坛还看到一个网友讲了一个技巧:MX 2004没有标准模式,那么如何能够让出现提示呢?只要使用后缀就成了。比如影片的话你在名字后面加_mc就成了。这样提示命令就只显示与mc有关的内容了。
一试果然。
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
}