cocos2d是使用pyglet事件框架来处理事件的。

其中,包括分发器(发射器)和监听器两部分。下面形象的来打个比方。

这个机制就好比一把枪,三步:扣扳机(触发),上弹(注册),给子弹上炸药(这个装逼一点叫监听,实际上就是定义一个函数)。

1.我们首先想到的使用枪就是扣扳机,而这就是cocos2d的事件触发,说明白点就是去调用某一个事件(函数)。

:self.dispatch_event('XXX')

2.我们光有扳机还不行,我们还得说明在扣完扳机之后要做什么?当然是发射子弹了,但是程序还不知道,所以我们要告诉程序:"你应该发射子弹",也就是我们要告诉程序,我有一个子弹(函数),也就是注册发射器。

register('XXX');

3.枪上膛(注册监听器):

  定义发射器的实例,然后调用其方法,以后要是程序跑到这里来了就会执行对应的代码,也就是开枪,所以叫做监听器。呵呵,这些名字也是挺形象的啊!!!

  gun.push_handler(); 

 当然,定义调用的函数一般也是这时候定义的。

 

为什么要用一个这种机制?而不是每次直接响应一个函数就可以了呢?为什么?

个人理解:

这就好比一把枪,如果每次都是扣扳机,然后打一颗子弹,这样的效率是非常低的。

后来人们就学聪明了,既然每颗子弹都是执行一样的动作,都是放到那里,然后撞击发射出去,为什么不做一个弹簧在下面,每次自动弹到上面呢?这就是后面出现的弹夹咯!!也就是程序里的机制。我们把框架写好,以后每次要有这种回调函数,都这么做,写很少的代码,实现强大的功能。代码的结构也非常好。可读性也非常好,一旦理解机制,就知道这种代码的功能。岂不是喜大普奔啊!!!!

最新文章

  1. DarkStone - 跨平台移动应用开发之 Flex 的崛起
  2. “添加到收藏夹”功能(share)
  3. Zookeeper-Zookeeper leader选举
  4. Laravel教程 七:表单验证 Validation
  5. loadrunner 学习笔记--AJAX(转)
  6. 设置应用中出现NFC服务,去掉
  7. DataTables获取表单输入框数据
  8. 调试存储过程时提示ORA-20000: ORU-10027: buffer overflow
  9. [ACM] n划分数m部分,它要求每一个部分,并采取了最大的产品(间隔DP)
  10. 【python之路10】python实例练习
  11. 转:Socket原理与编程基础
  12. 【慕课网实战】九、以慕课网日志分析为例 进入大数据 Spark SQL 的世界
  13. Python_反射
  14. Redis Bgrewriteaof 命令
  15. Luogu 1068 - 分数线划定 - [快速排序]
  16. 卷积(转自wiki百科)
  17. oracle创建用户、授权、导入、导出命令总结
  18. COGS.1317.数列操作c(分块 区间加 区间求和)
  19. bzoj1606
  20. 前端性能优化之按需加载(React-router+webpack)

热门文章

  1. 【原】http缓存与cdn相关技术
  2. [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法
  3. Ztree的简单使用和后台交互的写法(二)
  4. BufferedReader类
  5. Webpack 之 Loader 的使用
  6. BeanNameAware接口和BeanFactoryAware接口
  7. ubuntu系统下更新jdk版本
  8. Lnmp的安装、配置
  9. 2015年11月26日 Java基础系列(四)class的定义,继承和实现interface
  10. Book-编程珠玑-第一章