【问题标题】:cocos2d-x menu item error with callback function带有回调函数的 cocos2d-x 菜单项错误
【发布时间】:2017-12-19 05:49:48
【问题描述】:

我有这个 5 年前的代码:

CCMenuItemSprite* quitItem = CCMenuItemSprite::create(quitLabel,quitLabel2,quitLabel3,this,menu_selector(ClearScene::call_quitItem));

我正在重构代码并迁移到最新的 cocos2d-x。上面的例子一直给我错误:

error: invalid static_cast from type 'void (MyScene::*)()' to type 'cocos2d::SEL_SCHEDULE {aka void (cocos2d:Ref::*)(float)}'

我尝试过使用CC_CALLBACK_n,但仍然无法正常工作。 (类似HelloWorld.cpp文件:

auto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

【问题讨论】:

  • 显示您的ClearScene 课程?

标签: c++ cocos2d-x


【解决方案1】:

看起来像参数问题。你的call_quitItem 接受Ref* sender 吗?我记得在v1.x是可选的

【讨论】:

    【解决方案2】:

    call_quitItem 方法中有多少个参数?

    CC_CALLBACK_N

    (N)数字表示回调函数有多少个参数。 CC_CALLBACK_0 表示不带入参的回调函数,如MyClass::doSomething()

    CC_CALLBACK_1 表示只有 1 个输入参数。例如,MyClass::doSomething(int a)


    // 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__)
    

    【讨论】:

      猜你喜欢
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      相关资源
      最近更新 更多