Как вызвать функцию callfunc в cocos2dx 3.0

Мне нужно преобразовать объект С++ в С++ 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". Может ли кто-нибудь мне помочь или помочь.


person Vanarajan    schedule 19.01.2014    source источник
comment
Вам нужно изменить NULL на объект, для которого вы хотите вызвать метод.   -  person TigerCoding    schedule 20.05.2014


Ответы (4)


В коде просто замените приведенный ниже код:

 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< /а>

person Community    schedule 20.01.2014

Так как у меня была такая же проблема, это может помочь кому-то

CallFunc::create( std::bind(&Hero::stopBlinking,this) );
person Sohaib    schedule 10.05.2014

Вам нужно сделать следующее

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

Еще один способ через лямбда-функции:

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

Но, конечно, это больше подходит для короткого блока кода, например:

node->removeFromParent();
person Andrew Bogaevskyi    schedule 15.03.2017