在Cocos2d-x 3.17中,MenuItem类的itemForTouch方法已被移除,取而代之的是onTouchBeganonTouchEnded方法。您可以使用以下代码示例来实现类似的功能:

bool YourClass::onTouchBegan(Touch* touch, Event* event)
{
    if (event->getCurrentTarget()->getBoundingBox().containsPoint(touch->getLocation()))
    {
        // 当用户点击了该节点时执行的代码
        return true;
    }
    return false;
}

void YourClass::onTouchEnded(Touch* touch, Event* event)
{
    // 当用户松开了点击的节点时执行的代码
}

// 使用示例
auto menuItem = MenuItemImage::create("normal.png", "selected.png", CC_CALLBACK_1(YourClass::menuCallback, this));
menuItem->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
menuItem->setPosition(visibleSize.width / 2, visibleSize.height / 2);

auto menu = Menu::create(menuItem, nullptr);
menu->setPosition(Vec2::ZERO);
menu->setAnchorPoint(Vec2::ZERO);
this->addChild(menu);

auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(YourClass::onTouchBegan, this);
listener->onTouchEnded = CC_CALLBACK_2(YourClass::onTouchEnded, this);
this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, menuItem);

在这个示例中,YourClass是您的自定义类,menuCallback是一个回调函数,用于处理菜单项的点击事件。您可以根据您的需求在onTouchBeganonTouchEnded方法中执行相应的代码

cocos2dx-20升级为cocos2dx-317后menu的itemForTouch改成什么了

原文地址: https://www.cveoy.top/t/topic/hWEy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录