未调用菜单回调

menu callback in not called

本文关键字:回调 菜单 调用      更新时间:2023-10-16

我想在我的场景中添加两个按钮——"设置"answers"重启",放在所有东西的上方。我做了下面的操作[在我的init()中]:

auto settingsMenu = MenuItemImage::create("settings_gold@2x.png", "settings_white@2x.png",
CC_CALLBACK_1(GameLevelLayer::settingsButtonTapped, this));
settingsMenu->setPosition(Point(440, 280));
this->addChild(settingsMenu);

我还添加了触摸处理程序来处理游戏"动作",如下所示:

// handle user touches
auto dispatcher = Director::getInstance()->getEventDispatcher();
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(GameLevelLayer::onTouchBegan, this);
listener->onTouchEnded = CC_CALLBACK_2(GameLevelLayer::onTouchEnded, this);
dispatcher->addEventListenerWithSceneGraphPriority(listener, this);

我的onTouchBegan()和onTouchEnded()被调用的很好,但是settingsbuttontapping()从来没有被调用,因为触摸处理程序显然吞噬了一切。

在cocos2d- x3中应该如何处理?x,这样点击菜单调用settingsbuttontapping ()?

谢谢

同事建议cocos2d- x3。x的方法是使用ui:Button,而不是MenuItemImage。

将代码改为:

auto settingsButton = cocos2d::ui::Button::create();
settingsButton->setTouchEnabled(true);
settingsButton->loadTextures("settings_gold@2x.png", "settings_white@2x.png");
settingsButton->setPosition(Point(440, 270));
settingsButton->addTouchEventListener(CC_CALLBACK_2(GameLevelLayer::settingsButtonTapped, this));
this->addChild(settingsButton);
// handle user touches
auto dispatcher = Director::getInstance()->getEventDispatcher();
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(GameLevelLayer::onTouchBegan, this);
listener->onTouchEnded = CC_CALLBACK_2(GameLevelLayer::onTouchEnded, this);
dispatcher->addEventListenerWithSceneGraphPriority(listener, this);

现在,按下按钮调用按钮回调,图层上的触摸仍然被处理。