【问题标题】:How to call a method of the first class of the second, by pressing the button?如何通过按下按钮调用第二类的第一类方法?
【发布时间】:2013-12-26 14:22:15
【问题描述】:

我无法从另一个类调用一个类的方法:rewrite the code cocos2d (objective-c) on 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>          ]

没有完全变成kidat.Tam 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));

}

【问题讨论】:

    标签: c++ objective-c cocos2d-iphone cocos2d-x


    【解决方案1】:

    在 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.....它应该是静态方法。,没有什么好处。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        相关资源
        最近更新 更多