我想在visual studio中运行我的第一个项目,但是你看它似乎有两个错误,我不知道它们是什么意思
void CCloud::Start(){
this->stopAllActions();
float currentX = this->getPositionX();
float distance = currentX - -(_xOffset);
float time = distance / _pixelsPerSec;
CCPoint destination = ccp(-_xOffset, this->getPositionY());
CCMoveTo *actionMove = CCMoveTo::create(time, destination);
CCCallFuncN *actionMoveDone = CCCallFuncN::create(this, callfuncN_selector(CCloud::ReachedDestionation));
this->runAction(CCSequence::create(actionMove, actionMoveDone, NULL));
}
这两个错误是:
错误1错误C2440:'type cast':无法从'void(__ thiscall CCloud :: *)(void)'转换为'cocos2d :: SEL_CallFuncN'
C:\ Users \ sergi_000 \ Downloads \ cocos2d-x-2.2.3 \ projects \ myfirstapp \ Classes \ CCloud.cpp 27 1 HelloCpp
错误2错误C2665:'cocos2d :: CCCallFuncN :: create':2个重载中没有一个可以转换所有参数类型
C:\ Users \ sergi_000 \ Downloads \ cocos2d-x-2.2.3 \ projects \ myfirstapp \ Classes \ CCloud.cpp 27 1 HelloCpp
如果有人能帮助我,我会很高兴,谢谢!
答案 0 :(得分:1)
指向成员函数的指针与指向非成员函数的指针不同。指向成员函数的指针需要调用实例。
通常的解决方案是,具有回调功能的库允许用户设置某种"用户数据"然后您可以将其设置为对象实例。然后创建一个回调包装器函数,通常作为static
成员函数(可以用作普通的非成员函数指针),并在其中获取用户数据,将其转换为正确的类,并调用你真正想要调用的函数。
警告:我不知道cocos2d-x是否支持回调用户数据。
答案 1 :(得分:0)
就我而言,#define callfuncN_selector(_SELECTOR) CC_CALLFUNCN_SELECTOR(_SELECTOR)
已被弃用。你不应该使用它。
此外,CCloud :: ReachedDestionation需要一个函数,它将CCNode *(也已弃用)作为输入。检查您的示例中是否为真,或者在此处发布源代码,以便我可以获得更好的答案。
最后(但并非最不重要) - 通常不错的做法是尽量不使用弃用的方法,因为它通常意味着引擎有更好的机会。
答案 2 :(得分:-1)
您应该使用以下代码: