Я не могу сделать вызов метода класса из другого класса: переписать код cocos2d (object-c) на cocos2d-x (c++)
Ошибка:
c:\program files\microsoft visual studio 11.0\vc\include\xrefwrap(273): error C2562: std::_Pmd_caller<_Ret,_Arg0>::_Call_pmd: функция типа "void", возвращающая значение
1> with
1> [
1> _Ret=void,
1> _Arg0=cocos2d::Object
1> ]
1> c:\program files\microsoft visual studio 11.0\vc\include\xrefwrap(271): см. объявление "std::_Pmd_caller<_Ret,_Arg0>::_Call_pmd"
1> with
1> [
1> _Ret=void,
1> _Arg0=cocos2d::Object
1> ]
Не станет полностью ребенком. Еще 20 строк того же
HudLayer.cpp
CCMenuItem *button = CCMenuItemImage::create("1.png","1.png",menu_selector(HelloWorld::createSprite));
helloworld.cpp
void HelloWorld::createSprite(CCObject *sender)
{
_sprite->initWithFile("bird.png");
_sprite->setPosition(ccp(x,y));
}
В IronMan.h вы должны объявить
static void playClicked();
В Avenger.cpp вы можете использовать этот метод
CCSize *screenSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint pointOrigin = CCDirector::sharedDirector()->getVisibleOrigin();
float x = screenSize.width;
float y = screenSize.height;*
CCWidgetLayout * widgetLayout = CCWidgetLayout :: create();
AddChild (widgetLayout);
CCButton* playButton = CCButton::create("btn1.png", "btn2.png", "btn3.png");
playButton->setPosition(x/1.2f,y/1.5f);
playButton->setClickSelector(this,click_selector(IronMan::playClicked));
widgetLayout->addChild(playButton,1);
Вы должны это сделать.
CCMenuItem *button = CCMenuItemImage::create("1.png","1.png",menu_selector(HudLayer::createSpriteMethod));
void HudLayer::createSpriteMethod(CCObject *sender)
{
_helloWorld//assuming you have instance of HelloWorld
_helloWorld->createSprite(sender);
}
для HelloWorld :: createSprite..... он должен быть статическим методом. от него ничего хорошего не получается.