在cocos2d里有2种回调,第一种是通过schedule计时器每针回调,第二种是通过ccCallfunc 在某一个节点(CCNode)的runAction回调。
这两种回调函数都需要绑定一个CCObject*类指针,而且都可以通过 某种方法来确定 回调的次数,延迟 和 时间间隔,看似这两种回调相差不大,
但只有当你去使用的时候才发现区别有多大。
首先schedule回调是 让某个函数 每隔一段时间不断调用且可以不停止它就一直被调用,直到手动去停止它或该schedule所属于的类被onExit了,
简单来说就是,我们可能并不知道schedule会被调用多少次。
而cccallfunc则是在靠runAction调用,所以被调用的次数在代码里就已经决定了,所以在这方面的cccallfunc和schedule有点像数据里的扎和堆。
还有就是schedule可以可以调用类的static函数,神奇吧,虽然很奇怪,但不用怀疑,确实可以这样调用,只要将被绑定的指针制为空好了。
而cccallfunc则不能调用 类static函数, 但它可以调用 重载函数(有个函数 void func(void) ,void func(int value) cccallfunction 可以调用void func(void) )
这点schedule就不行了,但cccallfunc也可以 调用没有绑定类的函数,这点和schedule一样。而且cccallfunc还有cccallfuncN 和cccallfuncND 这些可以带
参数的函数,这点比schedule好用多了。
综上来看,这两种回调各有千秋,但个人感觉cccallfunc更为强大,也更好控制。