zoukankan      html  css  js  c++  java
  • cocos2d事件处理机制之我见

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

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

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

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

    :self.dispatch_event('XXX')

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

    register('XXX');

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

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

      gun.push_handler(); 

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

     

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

    个人理解:

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

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

  • 相关阅读:
    Oracle根据表的大小排序SQL语句
    设置新时间校正服务器NTP SERVER
    ORACLE设置密码无过期
    查看端口是否开通的命令行语句
    ORACLE基本操作备忘
    ORACLE数据导入导出后新数据库中某些表添加操作报错[ORA-12899]
    ORACLE数据库在导入导出时序列不一致的问题
    第一章:走近java-深入理解java虚拟机-读书总结
    智能指针的实现
    随机数的生成:给定1-n的随机数生成器randn(),生成1-m的随机数
  • 原文地址:https://www.cnblogs.com/hackerl/p/4480696.html
Copyright © 2011-2022 走看看