在Cocos2d-x 3.17中,Menu类中的itemForTouch方法已被移除。如果你想在新版本中实现类似的功能,你可以使用EventDispatcher类来处理触摸事件。

下面是一个示例代码,用于在Cocos2d-x 3.17中实现类似的功能:

bool YourClass::onTouchBegan(Touch* touch, Event* event)
{
    // 获取触摸点的位置
    Vec2 touchLocation = touch->getLocation();

    // 遍历菜单中的所有子项
    for (const auto& child : menu->getChildren())
    {
        // 将子项转换为MenuItem类型
        MenuItem* menuItem = dynamic_cast<MenuItem*>(child);
        if (menuItem && menuItem->isVisible() && menuItem->isEnabled())
        {
            // 获取子项的世界坐标
            Vec2 worldPos = menuItem->getParent()->convertToWorldSpace(menuItem->getPosition());

            // 获取子项的矩形区域
            Rect rect = Rect(worldPos.x - menuItem->getContentSize().width * 0.5f,
                             worldPos.y - menuItem->getContentSize().height * 0.5f,
                             menuItem->getContentSize().width,
                             menuItem->getContentSize().height);

            // 检查触摸点是否在矩形区域内
            if (rect.containsPoint(touchLocation))
            {
                // 处理子项被触摸的逻辑
                menuItem->activate();
                return true;
            }
        }
    }

    return false;
}

这里使用了Rect类来表示菜单项的矩形区域,并使用containsPoint方法来检查触摸点是否在矩形区域内。如果在矩形区域内找到了触摸点,就可以处理相应的逻辑。

请注意,你需要将YourClass替换为你自己的类名,并确保你在适当的地方注册了触摸事件监听器

cocos2dx20升级到cocos2dx 317后itemForTouchtouch 提示 No member named itemForTouch in cocos2dMenu

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

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