Как вызвать метод первого класса из второго, нажав кнопку?

0

Я не могу сделать вызов метода класса из другого класса: переписать код 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));

}
Теги:
cocos2d-x
cocos2d-iphone

2 ответа

2
Лучший ответ

В 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);
2

Вы должны это сделать.

  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..... он должен быть статическим методом. от него ничего хорошего не получается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню