当前位置: 首页 > 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种上传图片并实现预览的方法
  • 暑假小集训
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • gops —— Go 程序诊断分析工具
  • Iterator 和 for...of 循环
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • passportjs 源码分析
  • Selenium实战教程系列(二)---元素定位
  • 高性能JavaScript阅读简记(三)
  • 基于 Babel 的 npm 包最小化设置
  • 那些被忽略的 JavaScript 数组方法细节
  • 小程序开发中的那些坑
  • 中文输入法与React文本输入框的问题与解决方案
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 说说我为什么看好Spring Cloud Alibaba
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)(1.9) MSP (version 4.2)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (转)大型网站架构演变和知识体系
  • ***检测工具之RKHunter AIDE
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core 项目指定SDK版本
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .sdf和.msp文件读取
  • @Autowired和@Resource的区别
  • [ Linux ] Linux信号概述 信号的产生
  • [Android] Android ActivityManager
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [CTO札记]如何测试用户接受度?
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • [Latex学习笔记]数学公式基本命令
  • [LeetCode]-225. 用队列实现栈
  • [linux]linux命令学习-netstat