【问题标题】:How to call callfunc function in cocos2dx 3.0cocos2dx 3.0如何调用callfunc函数
【发布时间】:2014-02-08 13:10:08
【问题描述】:

我必须将目标 c++ 转换为 C++ 11。我坚持使用以下语法。 我在 testcpp 中提到并尝试以下语法。

这是我尝试过的代码:

this->runAction
(
 Sequence::create
 (
  blink,
  CallFunc::create(CC_CALLBACK_0(Hero::stopBlinking, NULL)),    -> issue this line.
  NULL
  )
 );

显示错误"no matching function for call to 'bind'" in "CallFunc::create". 任何人都可以帮助或帮助我。

【问题讨论】:

  • 您需要将NULL更改为您想要调用该方法的对象。

标签: c++11 cocos2d-x cocos2d-x-3.0


【解决方案1】:

在您的编码中,只需替换以下代码:

 CallFuncN::create(CC_CALLBACK_1(Hero::stopBlinking,this));

因为

 CallFunc can be created with an @std::function<void()>  
 CallFuncN can be created with an @std::function<void(Node*)

参考:

http://www.cocos2d-x.org/wiki/Release_Notes_for_Cocos2d-x_v300/diff/5

【讨论】:

    【解决方案2】:

    由于我遇到了同样的问题,它可能会帮助某人

    CallFunc::create( std::bind(&Hero::stopBlinking,this) );
    

    【讨论】:

      【解决方案3】:

      你需要做以下事情

          FiniteTimeAction *callAct = CallFunc::create(CC_CALLBACK_0(Hero::stopBlinking, this));
          Sequence* seq = Sequence::create(blink,callAct ,NULL);
          this->runAction(seq);
      

      【讨论】:

        【解决方案4】:

        通过 lambda 函数的另一种方法:

        CallFuncN *callFunc = CallFuncN::create([&] (Node* node) {
            // cast node to Hero and do what you need with it
        });
        

        当然,这更适合短代码块,例如:

        node->removeFromParent();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          相关资源
          最近更新 更多