您当前的位置:首页--> 动画制作--> Flash制作技巧--> 正文

事件侦听器示例汇总

来源: 录入时间:07-04-26 23:32:41

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

这么说吧,就好像订报纸,我们可以每隔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

上一篇文章:
下一篇文章:


  把此文章收藏到: