统计在线人数...

事件侦听器示例汇总

[ 来源:蓝色理想 | 作者:lzyy | 时间:2006-8-29 上午 10:31:43 | 浏览:统计中... ]

事件的侦听器-广播器模型与事件处理函数方法不同,它允许多个代码片断互不冲突地侦听同一事件。

这么说吧,就好像订报纸,我们可以每隔5分钟去看一次报纸到没到,如果您的时间很充裕的话;也可以跟报刊店的老板打声招呼,告诉他报纸到了,就给送来。很明显,后者的效率远高于前者,在flash里面前者就像这样

this.onEnterFrame=function(){
    if(paperArrived){
        sendme();
    }
}

结果就是每一帧都得检验paperArrived是否为true,效率太低,但也能解决问题。

运用事件侦听器-广播器模型,就像这样

var myObj=new Object();
myObj.onPaperArrived=function(){
    sendme();
}
me.addListerner(myObj);

只要报纸一到,马上执行sendme();这个程序,高效啊!

下面来看一下demo,这里我没有把stage列入,因为比较偏,平时用到的也不多。


demo

主要代码(这里以mouse为例):

this.createEmptyMovieClip("tmp_mc", this.getNextHighestDepth());
var myMouseObj = new Object();
myMouseObj.onMouseDown = function() {
    if (_xmouse>400 && _xmouse<550 && _ymouse>0 && _ymouse<300) {
        this.target_mc = tmp_mc.createEmptyMovieClip("", tmp_mc.getNextHighestDepth()-10000);//注意:这里我减了10000,有什么区别大家可以回去试一下
        origin_x = _xmouse;
        origin_y = _ymouse;
        this.Drawing = true;
    }
};
myMouseObj.onMouseMove = function() {
    if (_xmouse>400 && _xmouse<550 && _ymouse>0 && _ymouse<300) {
        if (this.Drawing) {
            //this.target_mc.clear();
            this.target_mc.lineStyle(1, 0xff0000, 100);
            this.target_mc.moveTo(origin_x, origin_y);
            this.target_mc.lineTo(_xmouse, _ymouse);
        }
        updateAfterEvent();
    }
};
msleep_btn._visible = false;
myMouseObj.onMouseUp = function() {
    this.Drawing = false;
};
mactive_btn.clickHandler = function() {
    Mouse.addListener(myMouseObj);
    msleep_btn._visible = true;
    mactive_btn._visible = false;
};
msleep_btn.clickHandler = function() {
    Mouse.removeListener(myMouseObj);
    msleep_btn._visible = false;
    mactive_btn._visible = true;
};

源文件下载addListener.zip

共有0人参与评价,平均得分:0分
评论内容只代表网友观点,与本站立场无关! 查看完整内容
   

当前在线人数
QQ:748838 MSN:allen_xia#msn.com E-mail:allenxia666#126.com QQ群:站长联盟北方区-北京(28200145) 站长联盟南方区-上海(67713522)