我在coco2d v2 ccmenu中找不到对itemForTouch的任何引用,所以有人可以告诉我这段代码的用途吗? if(![super itemForTouch:touch])部分,以及如何使它在coco2d v3中运行?
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
if (![super itemForTouch:touch]) {
return NO;
}
}
感谢
答案 0 :(得分:1)
您从哪里获取此代码?
CCMenu.m中有一个itemForTouch
。我假设通过查看您发布的内容,某人从CCMenu
派生了一个类,重写了他们自己的ccTouchBegan
,并调用了超级itemForTouch
方法。在该方法中,它循环遍历所有附加的菜单项,检查它们是否可见并启用,并查看触摸位置是否落在该菜单项的矩形内。如果没有触及任何菜单项,您发布的代码将返回NO
。
您不必手动调用此方法,这就是它未在头文件中声明的原因。如果没有看到您发布的代码的大局,我就无法理解为什么有人会从CCMenu
继承子类,假设他们甚至有合理的理由开始。另外在cocos2d v3中查看使用CCButton
,这是使用基本cocos2d模板创建新项目时给出的示例。
修改强>
我现在看到你在注释中链接的代码,它是创建一个菜单弹出类。他所做的只是看看父母中的一个是弹出窗口,如果是,则关闭弹出窗口,因为他知道弹出窗口上的按钮被触摸了。要在V3中执行此操作,假设您有一些充当CCMenuPopup
的父节点。您甚至可以将其命名为相同的名称,并在您觉得有必要时重新创建这些类。