火山PC方法子程序类成员事件,那么在以前已经给大家介绍了普通的方法,也就是说类别为通常属性读,属性写,那么那个方法呢,都是比较简单的,那么在这节课当中将给大家……
火山PC方法子程序类成员事件,那么在以前已经给大家介绍了普通的方法,也就是说类别为通常属性读,属性写,那么那个方法呢,都是比较简单的,那么在这节课当中将给大家介绍一种复杂的事件,也就是类成员事件,那么我们接下来来看。
定义类成员事件,那么这里呢,大家需要注意的一个点。
这个事件只针对成员变量有效,对于局部变量是无效的啊,对于局部变量是无效的。
首先我们来看定义事件的含义,定义本类对象将会发送事件的名称,事件由类中进行触发,会调用用户挂接的事件,这个看起来呢,不那么容易,不那么容易理解,那么我给大家举一个简单的例子,就是按钮被单击,那么按钮被单击实际上就是窗口类或者说按钮类当中定义好的一个事件,那么它有这个按钮啊,被点击的这个按钮。然后呢,当我们在窗口设计器当中双击按钮添加的时候。
然后呢,我们运行程序,鼠标点击,那这个时候呢,火山系统啊,就会针对我们点击的这个按钮,给我们响应这个我们定义的这个按钮点击事件,那么也就能做到,当我点击按钮的时候,是吧,按钮一一被被单击,这样的一个事件被调用,那么一会呢,我们到实例当中来看。
在这里呢,我们需要先知道定义事件有哪些约束条件。首先我们来看第一点,方法体必须为空,因为定义事件我们只需要放一个事件的这样的一个原型,或者说这样的一个声明在这就可以了,来告诉火山系统,我们现在有这么一个事件。
那么火山呢,就会对这个事件啊,进行一些处理,那么当然怎么处理呢,就是它的事情,我们只需要呢,把它定义出来,放在这里。
第二,返回值数据类型必须为整数啊,注意这个是必须的啊,是一个官方要求的,那这个我们也不必问为什么,我们就直接把它写为整数即可。
第三,不能为静态方法,那么这个大家应该就都理解。
前面的课程当中给大家介绍的静态方法,指的是对整个类都有效,而不单针对某一个成员或者某一个实例,那么在事件当中他肯定会有一个成员,所以说呢,这个静态的,呃,这个定义方法不能为静态。
好,大家如果不特别理解的话呢,可以先把这三条记住啊,因为这个是需要这样死记硬背的一个东西,我们必须知道它定义的这样的一个格式。
那么说完了定义事件,这里呢就该给大家介绍接收事件了,那么接收事件呢,跟定义事件它是互相组合的,有说是相对的,有定义,这边呢就可以有接收,但是如果没有定义的话呢,肯定就不能接收,所以呢,接收也是至关重要的,下面呢我们来看接收。
实际上这个定义呢,有点复杂了,说白了意思就是啊,我们定义了事件之后用什么接收呢?就用我们的这个接收事件进行接收,那么事件呢,可以由类中进行触发,会调用用户挂接的事件啊,大家看一下这个就可以了啊,一会呢,我们通过实例演示,大家一看就会明白。
返回值数据类型必须为整数啊,这是条件,那么这个条件呢,跟定义事件是相同的,返回值都必须是整数。方法的名称格式必须为事件对象类名加下划线加预接收事件名,那么这个名称呢,大家看一下就可以了,到后面呢,一会我给大家介绍一个啊,更加简单的添加方式,大家只需要记住大概的一个这个定义就可以了,不能为静态方法,那么这个也是定义事件所提到的。
在接下来这几个参数非常重要,大家要看清楚方法的第一个参数的数据类型必须为触发该事件的对象。类名什么意思呢?好比说我这有一个按钮,按钮类它的事件,它定义了一个叫按钮被单击,那么当接收的时候,第一个参数就必须为按钮类,就是哪个类触发这个事件,那么第一个参数就要是哪个类。
啊,那这个是第一个啊是类名,第二个呢,这个参数实际上是可以说是可选的,如果说我们使用挂接事件这个进行调用的话,就需要传递一个标记值,那么这个标记值呢,当事件被触发的时候,就会原封不动的再传给我们,相当于做这样的一个区别啊,这样也更加灵活,但是呢,通常来讲这个是不需要的,我们都使用默认添加事件就可以了。
最后一个方法,其余参数的数目及数据类型必须和定义事件一致啊,这其实就是定义事件一致,因为当定义事件的时候呢,这三点只是约束条件,那么抛开这三点,我们可以给我们定义的这个事件添加参数,那么添加参数之后呢,对应的接收事件,这里呢,我们就要也有对应的参数,这样呢,才能通过定义,然后将事件接收。
好,那么概念部分就给大家说到这里,下面呢我们要开始进行实例的一个讲解,那么相信大家听了这么多啊,可能有点云里雾里的是吧,因为毕竟第一次接触这个,可能不特别理解,那么没有关系啊,下面呢给大家来打开。
我们这个火山啊,给大家来实例的演示一下,那现在呢是第九课,所以呢,我这里添加一个第九课的项目,那么同样使用控制台。
啊使用控制台,然后呢,首先因为是类方法嘛,是吧,我先添加一个类,那么这个方法呢,是叫事件测试类。
啊,然后呢,方法那么我们这里看一下例子。
当一个方法执行开始时,触发一个事件。
那么第二呢,就是当一个方法执行完毕时,触发一个事件,那首先呢,我们先把这个方法写出来。
的方法,我们可以叫做啊。
执行方法。
那肯定要公开,因为到时候呢,我们要在外部进行调用,那么这个方法呢,我可以让它有一个整数型。
然后呢,我可以让它有两个参数。
参数一参数二都是整数型。
那么定义类大家可能都已经没有问题了啊,所以我就直接返回参数一加参数二,那实际上呢,这个命令是做了一个加法,那这里呢,大家都能看的出来,他是做了一个加法。
那么我们来看第一点。
当一个方法开始时啊,执行开始时触发一个事件,事件还要有参数,参数就是方法的参数,什么意思呢?就相当于我们在前面做一个前置的这样的一个挂钩,那么当这个程序执行的时候啊,这个方法执行的时候,先执行我们的另一个方法,然后呢,再执行本来的就相当于是这样的一个钩子啊,大家不知道有没有听说过啊,就是钩子这样的一个含义,那下面呢,我们就要定义我们这个事件。
方法开始执行,那这里呢,类别我们要注意,要选择定义事件。
啊,公开选动返回值,大家记起来刚才说的必须为整数型,那我们就定义为整数型参数。
那么这个参数呢,因为这里要求啊,事件参数为方法的参数,也就是说我们在事件里边也要接收它两个方法的参数,那么具体要做什么用呢?大家一会看就明白。
那么定义事件,然后呢,不能为静态,也不能有方法内容,所以这里呢,我都留空啊,都给它留空,那么接下来呢,我要定义第二个事件,第二个事件是什么,当一个方法执行完毕时。
触发一个事件,那么事件的参数为方法的返回值,那也就表示一前一后有两个挂钩,分别是开始执行的时候跟最后执行完毕的时候,这个时候呢,我们就在后面再加入一个新的方法。
那么这个叫做方法执行完毕,同样的公开类别就是定义事件返回值必须为整数型,那么这个时候,因为我们这要求的是事件的参数为方法的返回值,那也就是说当方法执行完毕之后,将要返回的时候,先把返回值给我们,我们先看一眼,然后再让它返回,所以说这里呢,我们需要一个参数叫做方法的返回值,那么返回值的参数大家看到是根据这个方法来的。
啊,所以呢,我们这里也写为整数。
然后呢,我们要在方法中对这个事件进行触发,怎么触发呢?实际上就是调用性这个事件方法开始执行,那么开始执行的时候呢,我把参数一和参数二给我们的这个事件,让事件呢,相当于是进行一个这样的一个预先检查,那么检查之后呢,然后继续往下执行。
那么这个时候,因为呢,我们这个完毕的时候啊,需要得到它的返回值,那就不能让它直接先返回了,我们必须得中间给它做一个是吧,做一个这样的一个像挂钩一样把它截住,所以呢,我们先定一个叫返回值。
让我们的返回值先等于他将要返回的这个结果,然后呢,再将这个结果先给我们进行检查,方法执行完毕,先把返回值给我们,然后呢,再去进行方法的一个返回。
那么到此为止呢,我们就已经定义好了,我们现在要演示的这个例子,那下面呢,大家来。
跟着我继续看,那现在呢,我就要写代码来调用我们这个类了,好,我们现在呢,先写上,那这个类我就可以叫测试类,然后呢,把它实例化出来,然后呢,我调用执行方法,这个命令传递一个一来传递一个二,那么因为这个方法呢,具有返回值,所以呢,我要把返回值也收起来。
我把返回值也收起来,然后呢,在这里输出一下返回值,确认呢,我们这个函数执行完毕,而且呢,有值返回给我们,我现在运行它。
好,现在进行编译啊,大家稍等。
好,大家看到这里输出了三啊,没有问题,那么这个时候大家会说,诶,这个事件好像没有什么反应,那因为呢,我们还没有添加这个事件的一个响应处理,那现在呢,我们来进行添加,那么快速的方法是,我们可以直接在这个类那看到这个类就是我们将触发事件,我们直接在这个类上面点击右键,选择添加测试类的事件接收及虚拟方法,就可以打开这样的一个对话框,里面就会显示当前这个事件,或者说当前这个类所有的事件和方法啊,那现在呢,我们就要调用这个开始执行,然后呢,我们点击确定,这个时候呢,就会给我们自动添加好接收事件啊,大家就不用像前面这样啊,自己去写名字,然后怎么定义啊,都不需要,我们只需要呢,点击了之后按照我们需要进行执行,那首先我们看前面这两个啊,目前来讲,对我们这呢是。
没有什么作用,所以呢,我们先忽略他们,那么它会有参数一跟参数二,那么这两个值呢,就是我们传递进这个执行方法的参数一和参数二,我们可以在这先输出一下。
前置执行,然后呢,我们把我们方法名加上啊,这个时候我们把参数一和参数二都输出。
因为是整数,所以呢,我们要倒文本,把整数转为文本,那么这个时候呢,前置事件我们就添加好了,那么还有一个叫执行完毕的时候,我们仍然需要一个事件,所以呢,我们在添加第二个,那这个时候大家注意,当你添加完一个之后呢,这个后面就会有一个星,而且呢,提示该方法已经存在,那么如果你没添加的话,看这里是没有星,而且也不会提示已存在,所以我们点击确定继续添加。
那么在这里呢,仍要使用调试输出,那么我们在这里呢,就复制前面的。
叫做后置执行啊,我们把方法名拿过来,那么这个时候的参数呢,其实就是方法的返回值。
所以在这呢,我们直接叫做啊方法的返回值。
叫方法的返回值,那同样呢,需要到文本,因为是整数型,那么这个时候呢,我们再执行就应该能看到效果,诶但是大家发现没有什么效果,因为什么呢?因为前面给大家提到一个很重要的概念啊,必须为成员变量啊,对于局部变量是没有作用的,所以呢,我们需要在我们当前的类当中插入一个新的成员变量,然后呢,把它放在这里,那这个时候大家再看。
大家看到了这个事件呢,就正常的出来了,那么首先呢,先是啊定义这个类出来,然后类开始执行,执行的时候呢,我们依依次往下看,执行到执行方法,首先是第一句,第一句在这里,它会先调用方法开始执行,那么方法开始执行在哪里呢?我们要往上找,在这里,所以呢,它会先调用这一个,那么调用完这一个之后呢,输出这一段话没有问题,然后两个参数呢,都是我们给进去的。
接下来呢,方法自己执行啊,因为方法可能有很多代码啊,可能有很多我这里呢,作为演示啊,可能方法还有很多代码,那么当执行完毕之后呢,诶这个方法再次执行,方法执行完毕这个事件,然后呢,编器就会寻找这个事件的定义在哪,如果你没定义这个事件呢,程序也不会有问题啊,但是呢,你定义了之后,它就会自动去找,找到之后诶发现在这,那么它就会去调用这个里面对应的方法。
啊,然后呢,把参数传递进去,我们这传递进来的是返回值,所以它这接收到的也就是返回值,然后呢,它进行输出,输出之后呢,他再返回,那这个时候呢,大家看到最后呢,执行完毕之后也输出了这段话啊后置执行,那么最终呢,返回值被返回到上一层,也就是到这里,然后呢,最终再输出返回值等于三。
那这样的话,一个完整的事件就,啊,已经编写好了啊,大家可以再看一次效果。
前置后置,然后呢,是最后我们的一个返回结果,那么这个呢,大家可以动手自己写一下。
好那这个演示呢,就是刚才给大家演示的这样。
那么接下来呢,给大家留一个课后的作业,那么大家可以打开火山PC啊,打开官方历程窗口组件历程,查看每个项目当中组件的使用,那这里呢,给大家说一下。
当你打开一个火山的时候啊。
我们重新打开一个火山。
大家打开之后,那这里呢,会有一个打开样例。
那么样例呢,在左边这里啊,第一排这都是窗口组件,就是第一个文件夹,那么打开窗口组件呢,可以先看看里面的这些文件,它是怎么样触发事件的,那么先从时钟这里啊,大家可以看一下时钟啊这样然后他这里用的是接收事件,大家可以去熟悉一下接受事件这样的一个使用啊还有其他的呢,大家都可以自己啊下去看一下,那么这个呢,
还没有评论呢,快来抢沙发~