我正试图在我的游戏中获得一个介绍屏幕。几秒钟后它应该改变为游戏本身。
在我的introscreen类的Init中,我尝试制作一个序列,但是我收到以下错误:
无法从void类型转换为成员指针类型 'cocos2d :: SEL_CallFuncN'(又名 'void(cocos2d :: CCObject :: *)(cocos2d :: CCNode *)'
这是我的代码:
bool IntroScreen::init() {
if (!CCLayer::init()) {
return false;
}
cocos2d::CCSize screenSize = cocos2d::CCDirector::sharedDirector()->getWinSize();
cocos2d::CCSprite* logomarca = cocos2d::CCSprite::create("rayman_intro.png");
logomarca->setPosition(ccp(screenSize.width / 2, screenSize.height / 2));
this->addChild(logomarca, 1);
cocos2d::CCFiniteTimeAction *seq1 = cocos2d::CCSequence::create(cocos2d::CCDelayTime::create(3.0),
cocos2d::CCCallFuncN::create(this,
cocos2d::SEL_CallFuncN(cocos2d::CCDirector::sharedDirector()->replaceScene(Controller::scene())), NULL);
this->runAction(seq1);
return true;
}
我做错了什么?
答案 0 :(得分:0)
你应该把指针放到函数而不是函数
例如
cocos2d::SEL_CallFuncN(IntroScreen::replace)
在替换中放入要调用的代码,如果使用CallFuncN,则您的方法应该在第一个参数位置为对象运行该函数
void IntroScreen::replace(CCObject* sender){
cocos2d::CCDirector::sharedDirector()->replaceScene(Controller::scene();
}
答案 1 :(得分:0)
您可以在此使用scheduler
代替CCFiniteTimeAction
,而不是这样..
this->scheduleOnce(schedule_selector(IntroScreen::replace), 3);
void IntroScreen::replace(CCObject* sender){
cocos2d::CCDirector::sharedDirector()->replaceScene(Controller::scene();
}
同时在顶部插入“using namespace cocos2d;
”语句,以避免在任何地方写入cocos2d::
。