cocos2dx20升级到cocos2dx 317后itemForTouchtouch 提示 No member named itemForTouch in cocos2dMenu
在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替换为你自己的类名,并确保你在适当的地方注册了触摸事件监听器
原文地址: https://www.cveoy.top/t/topic/igGR 著作权归作者所有。请勿转载和采集!