cocos2dx源码之 选择器
来源:互联网 发布:网站建设优化推广 编辑:程序博客网 时间:2024/06/05 15:44
typedef void (Ref::*SEL_CallFunc)();
typedef void (Ref::*SEL_CallFuncN)(Node*);
typedef void (Ref::*SEL_CallFuncND)(Node*,void*);
typedef void (Ref::*SEL_CallFuncO)(Ref*);
typedef void (Ref::*SEL_MenuHandler)(Ref*);
typedef void (Ref::*SEL_SCHEDULE)(float);
#define CC_CALLFUNC_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFunc>(&_SELECTOR)
#define CC_CALLFUNCN_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFuncN>(&_SELECTOR)
#define CC_CALLFUNCND_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFuncND>(&_SELECTOR)
#define CC_CALLFUNCO_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_CallFuncO>(&_SELECTOR)
#define CC_MENU_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_MenuHandler>(&_SELECTOR)
#define CC_SCHEDULE_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_SCHEDULE>(&_SELECTOR)
首先,定义无返回值无参一个[函数]是这样滴~
void func();
定义这个无返回值无参的[函数指针]呢,
void (*func)(); //用括号把*和func括起来,是为了防止和返回void指针并且无参的函数(即void* func())区分开来。
定义一个无返回值无参的[函数指针]每次都要这么写,编写c语言规则的人肯定觉得会很蛋疼,为了方便大众,创造了一个定义一个[函数指针类型]的方法。
即: typedef 返回值 (命名空间::*函数指针类型名字)(参数列表)
typedef void (*func)(void)//定义一个无返回值无参的指针类型,叫func,和int float一样,它是一个类型。
不要觉得这个typedef和以前看过的不一样,不太顺眼,这只是一个固有用法而已,记住即可。不必纠结。
至于下面大选择器就比较好解释了,
一般使用的时候都是这么使用的,CC_SCHEDULE_SELECTOR(XXXNode::func);
即 static_cast<cocos2d::SEL_SCHEDULE>(&XXXNode::func);
大家都知道,&取地址操作,返回值是一个void*类型,即[无类型的指针]。
要想使用它必须把它强制转换成能用的类型,
就是func类型,所以我们也可以写一个无返回值无参的选择器
#define CC_NOPARAM_NORETURN_SELECTOR(_SELECTOR) static_cast<func>(&_SELECTOR)
最后说上几句,
这都是我个人对这些代码的理解,如果觉得有错的地方请在下方留言教育。
如果觉得说的还是有点道理的,可以在下面留言留下想下一期解析什么地方的代码。
- cocos2dx源码之 选择器
- cocos2dx之商店源码
- cocos2dx源码之 CREATE_FUNC宏
- cocos2dx 源码分析之 CCPoolManager
- cocos2dx游戏源码之《德州扑克》
- Cocos2dx源码分析之JumpBy的实现
- cocos2dx源码阅读之万能的Value
- jquery源码解析之选择器实现
- cocos2dx学习笔记(选择器)
- cocos2dx学习笔记(选择器)
- cocos2dx《单机斗地主》源码解剖之三 发牌
- cocos2dx《单机斗地主》源码解剖之五 叫地主
- cocos2dx源码之 引用计数及自动释放
- cocos2dx 源码分析 之Widget 头文件 (3.11.1)
- jQuery源码分析之Sizzle--css选择器引擎
- cocos2dx CCScrollView 源码分析
- cocos2dx-CCControlButton源码分析
- cocos2dx源码分析:ActionManager
- 总结的makefile,只求自己下次看的时候还能懂
- Leetcode 之 Subsets
- windows10 快捷键大全
- 哈夫曼树的实现
- Remove Duplicates from Sorted List II
- cocos2dx源码之 选择器
- 【HDU 5372】Segment Game(树状数组)
- 设计模式-创建型之建造者模式
- 算法题: 锤子剪刀布
- 黑马程序员———API之StringBuffer、Integer和Character
- 十个让你成为优秀程序员的有效方法
- Unity Mesh
- 2、Redis集群的调用
- I-539 表格