- 在线时间
- 1084 小时
- 最后登录
- 2015-9-10
- 注册时间
- 2014-4-18
- 听众数
- 162
- 收听数
- 1
- 能力
- 10 分
- 体力
- 43976 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 15250
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 3471
- 主题
- 2620
- 精华
- 1
- 分享
- 0
- 好友
- 513
升级   0% TA的每日心情 | 开心 2015-3-12 15:35 |
---|
签到天数: 207 天 [LV.7]常住居民III
 群组: 第六届国赛赛前冲刺培 群组: 国赛讨论 群组: 2014美赛讨论 群组: 2014研究生数学建模竞 群组: 数学中国试看培训视频 |
创建完听众后就可以定义听众的回调函数了,听众的回调函数可以是一个对象中的普通方法或静态方法,也可以是一个普通的函数(全局函数)。根据回调函数在不同位置处的定义,其函数参数形式有所不同。一般回调函数的定义格式如下。
(1)作为一个类的普通方法
methods
function CallbackFunction (obj,src,evnt)
%obj:本类实例
%src:产生事件的对象
%evnt:事件数据
...
end
end
这时,回调函数的第一个参数obj就必须是本类对象;第二个参数src是产生事件的对象;第三个参数evnt是事件数据。
(2)作为一个类的静态方法
此时,本类对象参数obj可以缺省,形式如下:
methods (Static = true)
function CallbackFunction (src,evnt)
%src:产生事件的对象
%evnt:事件数据
...
end
end
(3)作为普通函数
此时,对象obj可以缺省,形式如下:
function CallbackFunction (src,evnt)
%src:产生事件的对象
%evnt:事件数据
...
end
注意:无论什么情况下,回调函数至少应有两个输入参数。
有了回调函数,接下来就是回调函数的调用问题了。根据回调函数是类的普通方法、静态方法和普通函数的不同情况,其调用格式也有差别,具体如下。
(1)如果回调函数是一个普通函数,调用格式为:
hlistener = addlistener(eventSourceObj,'MyEvent', @CallbackFunction);
(2)如果回调函数是一个对象中的方法,则调用格式为:
hlistener = addlistener(eventSourceObj,'MyEvent', @obj.CallbackFunction);
(3)如果回调函数是一个类中的静态方法,则调用格式为:
hlistener = addlistener(eventSourceObj,'MyEvent', @ClassName.CallbackFunction);
另外,如果函数形式比较简单,也可用无名函数的形式调用,如:
hlistener = addlistener(eventSourceObj,'MyEvent', @(x,y) x.^2+y.^2);
当用event.listener类的构造函数来定义听众对象时,回调函数的调用方法与addlistener一致。
|
zan
|