注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

.

.

 
 
 

日志

 
 

Flash 事件侦听器基础  

2009-01-12 14:44:06|  分类: flash课件制作 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

动作脚本事件处理函数共有两类:事件处理函数方法和事件侦听器,要明白事件侦听器的概念,必须首先理解线性编程和事件驱动编程的区别

一 编程方法比较

(1)以时间为基础编程类似于观察一壶水是否被烧开,要想知道水是否被烧开了,需要不断的去进行观察,事实上过去我们的却是这样做的;

例如;影片剪辑man代表人,影片剪辑waterbottle代表水壶;变量temperature代表温度;当水温等于100度时人就可以把水拿走了;写成程序放在根时间轴第一帧上如下;

this.man.onEnterFrame=function   () {

if (waterbottle.temperature==100) {

   this.man.takewater();

} }

以上影片剪辑man不断的监视着影片剪辑waterbottle上的一个变temperature,当着个变量等于100时就可以把水拿走了;

(2)事件驱动编程;事件驱动编程的概念正好相反,过去的被监视者现在必须变成消息的发送者,现在的很多水壶都有一个峰鸣器,当水开了后会发出叫声,影片剪辑man不需要对水进行不断的监视了,只要峰鸣器(广播器)发出叫声(广播),监视者(侦听器)就可以收到那个广播,然后就去把水拿走;要使man可以收听waterbottle的叫声,必需把影片剪辑man注册成waterbottle事件的侦听对象;

//为广播器对象waterbottle注册一个侦听器对象man;

this.waterbottle.addListener(this.man);

这样当水开了后waterbottle就会向注册对象man发出通知--水开了;收到通知后影片剪辑man就去把水拿走;

//定义事件处理函数方法;

this.man.onwaterbottletemperature=function   (ss) {

this.man.takewater(ss);

}

二 事件侦听器模型

                    

单词含义;

    listenerObject//侦听器对象(收听者);

    broadcastObject//广播器对象(广播者);

标准模型

侦听器对象.事件名称=function(){...}

广播器对象.addListener(侦听器对象);

即;

listenerObject.eventName = function(){...};

broadcastObject.addListener(listenerObject);

说明

侦听器对象listenerObject可以是任何对象,例如舞台上的影片剪辑或按钮实例,或者可以是任何动作脚本类的实例。

eventName事件名称是在 broadCastObject 上发生的事件,然后将该事件广播到listenerObject。可以向一个事件广播器注册多个侦听器。

                                       

示例

//创建侦听器对象k;

k= new Object();

;

k.onMouseDown = function() {

_root.my_mc.stop();

};

//设置广播器对象;

//在广播器对象Mouse上注册侦听器对象k;用于接收 onMouseDown回调处理函数的通知。

Mouse.addListener(k);

示例

向一个广播器注册两个侦听器对象

//创建两个侦听器对象k1,k2;

k1= new Object();

k2= new Object();

;

k1.onMouseDown = function() {

_root.my_mc.stop();

};

//...;

k2.onMouseUp = function() {

_root.my_mc.play();

}

//设置广播器对象;

//在广播器对象Mouse上注册侦听器对象k1;用于接收 onMouseDown回调处理函数的通知。

Mouse.addListener(k1);

//........;

Mouse.addListener(k2);

示例

影片剪辑作为广播器,为一个侦听器广播三个事件;

//构造一个侦听器对象;

obj=new Object();

obj.onMouseDown=function   () {

_root.mc.my_txt.text="鼠标按下";

}

obj.onMouseUp=function   () {

_root.mc.a="鼠标释放";

}

obj.onMouseMove=function   () {

_root.mc.a="鼠标移动";

  

}

onClipEvent (load) {

Mouse.addListener(this._parent.obj);

}

三 自定义侦听器

示例

在看看我们开始提到的例子;

现在的很多水壶都有一个峰鸣器,当水开了后会发出叫声,只要峰鸣器(广播器)发出叫声(广播),监视者(侦听器)就可以收到那个广播,然后就去把水拿走;要使man可以收听waterbottle的叫声,必需把影片剪辑man注册成waterbottle事件的侦听对象;

//创建对象水壶;

waterbottle = new Object();

//将对象waterbottle作为广播器;

AsBroadcaster.initialize(waterbottle);

//创建对象男人;

man = new Object();

//定义事件处理函数方法;

man.boiled_water = function(ss) {

trace(ss);

};

//注册man为侦听器;

waterbottle.addListener(man);

//水开后进行广播;

waterbottle.broadcastMessage("boiled_water", "我把水拿走了");

  评论这张
 
阅读(386)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017