+ -
当前位置:首页 → 问答吧 → 如何实现后台响应的事件。

如何实现后台响应的事件。

时间:2011-01-04

来源:互联网

一般的比如像加载一个xml之类的文件,都可以将加载完成的动作放在onLoad事件中,这样就可以不影响到其他的顺序操作了。
象这样的可以自定义没有。

作者: QWEASZ   发布时间: 2011-01-04

 没看明白楼主的意思

作者: flash023   发布时间: 2011-01-04

异步事件处理吧

作者: HSZZLZL   发布时间: 2011-01-04

as2的自定义事件比较简单 随意性很强 但不标准 对于初学者 需要理解清楚调用initxxx那个方法为事件对象赋权力的重要性

作者: HSZZLZL   发布时间: 2011-01-04

就是了,不知道怎么用。

作者: QWEASZ   发布时间: 2011-01-04

http://tech.163.com/05/0328/16/1FUPN6KQ00091589.html


精简使用就是

var aa:Function = function(){
       trace("DD");
                //this.removeListner(this);
}
//这里使用var 声明 因为它是属于this的  如果是影片剪辑的方法   则直接使用  对象.方法名 = fucntion(){} 来声明


AsBroadcaster.initialize(this);  
//AsBroadcaster.initialize(事件源对象:Object) 作用类似主持人

//这里初始化构建成功一个事件源对象后,会给这个对象动态添加一个属性  _listener:Array  里面存有所有 addListener进去的 侦听者 对象 ,即下一步

this.addListener(this);  
//使用 事件源对象:Object  执行addListener侦听 作用类似主持人向参赛者说 与本轮环节有关的参赛者请注意


this.broadcastMessage("aa")
//使用 事件源对象:Object 主持人说出问题   然后参赛者就开始抢答

[ 本帖最后由 HSZZLZL 于 2011-1-4 11:11 编辑 ]

作者: HSZZLZL   发布时间: 2011-01-04

类比as3就是 initialize 这一个方法已经不用调用了  所有显示对象均间接继承自 EventDispatcher类
均具有事件派发能力


this.addListener(this);    类比就是    影片剪辑对象.addEventListener(

this.broadcastMessage("aa")   这里的aa类比成按钮点击后派发出的事件名 MouseEvent.CLICK 或者自定义的事件名

var aa:Function = function(){   这个类比其实就是 影片剪辑对象.addEventListener( 事件名,事件处理函数)

因为事件名 和事件处理函数必须同名  所以才会变成这样如此奇怪的结构  理解了就没什么了

作者: HSZZLZL   发布时间: 2011-01-04

这里搞错了 楼下再编辑

[ 本帖最后由 HSZZLZL 于 2011-1-4 11:11 编辑 ]

作者: HSZZLZL   发布时间: 2011-01-04

注意大小写  Flash MX 中是 ASBroadcaster类
在FLASH MX2004中改名为 AsBroadcaster类

另请参阅 http://qingyu87.blog.sohu.com/142176399.html

作者: HSZZLZL   发布时间: 2011-01-04

flash MX 2004中,增加了一个增强的事件类 EventDispatcher

在2009年的时候 我使用过这个类 当时总结出来的代码是这样
http://bbs.9ria.com/thread-40038-1-1.html


使用前紧记这个类非内带,需要import的
//import mx.utils.Delegate;
//import mx.events.EventDispatcher;
//一般为了解决函数指向,均习惯性导入Delegate这个类



import mx.utils.Delegate;
import mx.events.EventDispatcher;
//赋与aa 和 bb的事件能力
EventDispatcher.initialize(aa);
EventDispatcher.initialize(bb);

//将lis对象指向bb
//然后为bb(即lis)定义事件处理同名函数,然后作用域现在就是bb内了 就可以直接更新bb内的文本框了
//甚至乎,可以直接把这个方法定义在bb实例内,这样就实现了我所追求的脱耦要求了
var lis:Object = bb;
lis.updata = function(e){
        trace(e.data)
        this.info.text = e.data;
}

//aa按下的时候 派发事件及数据
aa.onRelease = function(){
        this.dispatchEvent({type:"updata",data:this.txt_input.text})
        //this.play();
}

//aa要侦听自己派发的事件 并且将后续处理转交给处理对象 lis
aa.addEventListener("updata",lis)

作者: HSZZLZL   发布时间: 2011-01-04

具体还可以参考的文章这里有一篇 http://edu.cnzz.cn/NewsInfo/12481.aspx

作者: HSZZLZL   发布时间: 2011-01-04

此帖算是总结了as2中两种自定义事件的使用了  自己收藏一下 往后有需要也翻查

作者: HSZZLZL   发布时间: 2011-01-04

import mx.utils.Delegate;
import mx.events.EventDispatcher;
//赋与aa 和 bb的事件能力
EventDispatcher.initialize(aa);
EventDispatcher.initialize(bb);
//这里的aa可以是任意对象  即亦包括影片剪辑 即赋给影片剪辑派发事件的能力

//将lis对象指向bb
//然后为bb(即lis)定义事件处理同名函数,然后作用域现在就是bb内了 就可以直接更新bb内的文本框了
//甚至乎,可以直接把这个方法定义在bb实例内,这样就实现了我所追求的脱耦要求了
var lis:Object = bb;
lis.updata = function(e){
        trace(e.data)
        this.info.text = e.data;
}

//aa按下的时候 派发事件及数据
aa.onRelease = function(){
        this.dispatchEvent({type:"updata",data:this.txt_input.text})
        //this.play();
}
//这个是对象或影片剪辑本身最基本的鼠标行为


//这里为对象或影片剪辑增加 事件侦听者  即主持人 添加 参赛者

//aa要侦听自己派发的事件 并且将后续处理转交给处理对象 lis
aa.addEventListener("updata",lis)

作者: HSZZLZL   发布时间: 2011-01-04