zoukankan      html  css  js  c++  java
  • [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://github.com/li-zheng-hao
  • 相关阅读:
    构建可靠的系统
    netty详解之reactor模型
    netty详解之io模型
    小明的魔法调度框架之旅
    JAVA版-微信高清语音.speex转.wav格式
    Spring Data JPA 缓存结合Ehcache介绍
    @media print样式 关于table断页
    JBPM学习第6篇:通过Git导入项目
    JBPM学习第5篇:Mysql配置
    JBPM学习第4篇:10分钟熟悉Eclipse
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053722.html
Copyright © 2011-2022 走看看