当前位置: 首页 > news >正文

[cocos2d-x]关于CC_CALLBACK

CC_CALLBACK的代码

// new callbacks based on C++11
#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)
#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
#define CC_CALLBACK_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)
#define CC_CALLBACK_3(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##__VA_ARGS__)

CC_CALLBACK中的一些参数

_selector_:回调函数指针
_target_:执行这个回调函数的具体对象指针
std::placeholders::_1:占位符
_VA_ARGS_:可变长参数列表

CC_CALLBACK后面跟的数字表示回调函数所带有的参数个数

举例

    listner->onTouchBegan = CC_CALLBACK_2(GameTest::onTouchBegan,this);//带有两个占位符
    listner->onTouchMoved = CC_CALLBACK_2(GameTest::onTouchMoved, this);//带有两个占位符
    listner->onTouchEnded = CC_CALLBACK_2(GameTest::onTouchEnded, this);//带有两个占位符

库中的一些宏定义

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)

转载于:https://www.cnblogs.com/lizhenghao126/p/11053722.html

相关文章:

  • net8:简易的文件磁盘管理操作二(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)...
  • HashMap HashTable和ConcurrentHashMap的区别
  • 响应式移动端去除css的hover和jq的hover还有input在苹果下的默认样式
  • Codeforces Beta Round #96 (Div. 1) C. Logo Turtle —— DP
  • 【RQNOJ】460 诺诺的队列
  • JS的join方法
  • java selenium (十四) 处理Iframe 中的元素
  • 日志架构
  • 各种定位方式
  • JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格······)...
  • [bzoj2957]楼房重建
  • 杨辉三角的几种方法
  • 标题四
  • 3种上传图片并实现预览的方法
  • 暑假小集训
  • __proto__ 和 prototype的关系
  • 30秒的PHP代码片段(1)数组 - Array
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JAVA多线程机制解析-volatilesynchronized
  • js面向对象
  • leetcode-27. Remove Element
  • mysql中InnoDB引擎中页的概念
  • PhantomJS 安装
  • Python 反序列化安全问题(二)
  • Quartz初级教程
  • TCP拥塞控制
  • vue脚手架vue-cli
  • 复杂数据处理
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 协程
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • $.ajax()方法详解
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (论文阅读40-45)图像描述1
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET企业级应用架构设计系列之应用服务器
  • .NET正则基础之——正则委托
  • .Net中的集合
  • /proc/vmstat 详解
  • /var/spool/postfix/maildrop 下有大量文件
  • [1] 平面(Plane)图形的生成算法
  • [145] 二叉树的后序遍历 js
  • [Android]如何调试Native memory crash issue
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽
  • [LeetCode]剑指 Offer 42. 连续子数组的最大和
  • [Linux] 用LNMP网站框架搭建论坛