30
2015
01

(九)事件

用代码实现动画,或是与用户的互动,就必然要用到事件,而事件又不是很好理解,所以有必要单独拿出来说一下下。

事件,可以理解为消息。任何一个消息都有源头,我们暂时不需要知道,我们只需要知道,在as3中都有哪些消息,我们如何获得这些消息,获得之后又能做什么。

1、有哪些事件:可以从帮助中找到,比如找到MovieClip,展开事件,发现有好多项,而且都是继承来的。先不用管这些都是什么。

2、如何获得事件:as中专业术语叫侦听,添加了侦听,当事件发生时就能够知道。

从MovieClip集成的公共方法中找到addEventListener。找到它的描述,如下:

也就是说,对于一个MovieClip的实例,我们可以通过调用它的addEventListener来侦听事件。其中type对应事件的类型,就是事件里边的那些项。

3、侦听到事件之后能做什么。

同样看上面的图,addEventListener的第二个参数listener是一个Function,就是一个函数(或者叫方法),这个函数可以是我们自己定义的。侦听到事件的时候,就会执行这个方法。

总结:我们可以通过调用影片剪辑的addEventListener方法来侦听事件,侦听的时候需要指定一种事件类型,同时指定一个自己定义的函数,当指定的事件发生的时候,就会去调用我们制定的函数。


举个例子:

鼠标点击。

新建一个影片剪辑,在舞台上放一个实例,命名为btn;

在舞台上创建一个动态文本,命名为tf;

然后在场景第一帧写代码:

var n:int=0;
btn.addEventListener(MouseEvent.CLICK,buttonClick);
function buttonClick(e:MouseEvent){
    n=n+1;
    tf.text="点击了按钮"+n+"次";
}

ctrl+enter

鼠标点击舞台上的按钮,每次点击,文本框的内容都会改变,显示了当前点击的次数。

获得 Adobe Flash Player

=================================================

分析一下上面的代码:

首先,我们定义了一个int类型的变量n,然后为舞台上的影片剪辑btn添加了一个侦听,调用btn的addEventListener,指定侦听的事件类型为MouseEvent.CLICK,(就是"click"),鼠标点击,指定事件发生时调用的函数是buttonClick,一个我们自己写的函数。再看一下buttonClick函数,它有一个参数e是MouseEvent类型的(因为当click事件发生时,系统会自动调用buttonClick,系统调用的时候传入了一个MouseEvent类型的变量,所以我们定义的时候要定义一个同样类型的参数),buttonClick函数内部,我们先让n加1,然后设置动态文本tf的text属性为"点击了按钮"+n+"次"(动态文本的text属性就是文本框中显示的内容,可以读写)。

有什么疑问可以查帮助,可以用trace,比如可以在buttonClick函数内部trace(e)。

=================================================

扩展:

当事件发生时,不管我们是否侦听,系统都会发出相应的事件(比如鼠标点击,按下键盘上的某个键);我们做的只是在需要的时候来侦听某个事件。

当我们不需要侦听某个事件的时候,通过调用实例的removeEventListener来实现移除相应的侦听。

如上面例子中移除侦听:btn.removeEventListener(MouseEvent.CLICK,buttonClick);

可以把buttonClick函数改成这样,试一下效果。

function buttonClick(e:MouseEvent){
    n=n+1;
    tf.text="点击了按钮"+n+"次";

    if(n>=10){

        btn.removeEventListener(MouseEvent.CLICK,buttonClick);

    }

}


具体事件,当用到的时候,查帮助,看帮助中的例子,自己用一次就会了。

打包下载源码

« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。