0
現在、私のソフトウェアをCocos2d-X 2.2.6からCocos2d-X 3.10に移行しており、MenuItemコールバックを動作させるのに問題があります。ここで私はのMainMenuオブジェクトを定義したヘッダファイルの一部であり、またCocos2d-Xメニューコールバック例外例外
bool MainMenuLayer::init()
{
bool result;
result = Layer::init();
mainMenu = Menu::create();
mainMenu->setPosition(0, 0);
this->addChild(mainMenu);
Sprite *equalSprite, *equalDownSprite;
MenuItemSprite *equalButton;
LabelBMFont *equalButtonLabel;
MenuItemLabel *equalButtonMenuLabel;
CCPoint equalButtonMenuLabelPosition;
CCPoint equalButtonPosition;
equalSprite = Sprite::createWithSpriteFrameName("botao_menu_igual.png");
equalDownSprite = Sprite::createWithSpriteFrameName("botao_menu_igual_down.png");
equalButton = MenuItemSprite::create(equalSprite, equalDownSprite, CC_CALLBACK_1(MainMenuLayer::buttonPressedCallback, this));
equalButton->setEnabled(gameContext->getEqualGameEnabled());
equalButton->setTag(EQUAL_BUTTON_TAG);
equalButtonPosition = Point(screenSize.width/4, screenSize.height/2);
equalButton->setPosition(mainMenu->convertToNodeSpace(equalButtonPosition));
mainMenu->addChild(equalButton);
equalButtonLabel = LabelBMFont::create(localization->getLocalizedString("EqualButtonLabel"), fontHelper->getStdFont().c_str());
equalButtonMenuLabel = MenuItemLabel::create(equalButtonLabel, CC_CALLBACK_1(MainMenuLayer::buttonPressedCallback, this));
equalButtonMenuLabel->setTag(EQUAL_BUTTON_TAG);
equalButtonMenuLabelPosition.x = equalButtonPosition.x;
equalButtonMenuLabelPosition.y = equalButtonPosition.y - equalButton->boundingBox().size.height/2 - equalButtonMenuLabel->boundingBox().size.height;
equalButtonMenuLabel->setPosition(mainMenu->convertToNodeSpace(equalButtonMenuLabelPosition));
mainMenu->addChild(equalButtonMenuLabel);
:
私のコードを下回っている
using namespace cocos2d;
class MainMenuLayer : public Layer
{
private:
Size screenSize;
Menu *mainMenu;
bool init();
void buttonPressedCallback(Ref *sender);
public:
MainMenuLayer();
~MainMenuLayer();
static MainMenuLayer *create();
static CCScene *scene();
};
の問題は、私は私のゲームを実行すると、上で作成したボタンをクリックすると、ファイルtype_traitsファイルと:return (((*_STD forward<_Ty1>(_Arg1)).*_Pmf)(_STD forward<_Types2>(_Args2)...));
行の例外が表示されます(下記参照)。
struct _Invoker_pmf_pointer
{ // INVOKE a pointer to member function on a [smart] pointer
template<class _Decayed,
class _Ty1,
class... _Types2>
static auto _Call(_Decayed _Pmf, _Ty1&& _Arg1, _Types2&&... _Args2)
-> decltype(((*_STD forward<_Ty1>(_Arg1)).*_Pmf)(
_STD forward<_Types2>(_Args2)...))
{ // INVOKE a pointer to member function on a [smart] pointer
return (((*_STD forward<_Ty1>(_Arg1)).*_Pmf)(
_STD forward<_Types2>(_Args2)...));
}
};
このコールバックは間違っていますか?他に誰かがこれに遭遇しましたか?