Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 代码是什么;if(![super-itemForTouch:touch]){返回否;}”;什么时候开始使用CCTouch以及如何使其在CoCoS2DV3中工作?_Cocos2d Iphone_Touch - Fatal编程技术网

Cocos2d iphone 代码是什么;if(![super-itemForTouch:touch]){返回否;}”;什么时候开始使用CCTouch以及如何使其在CoCoS2DV3中工作?

Cocos2d iphone 代码是什么;if(![super-itemForTouch:touch]){返回否;}”;什么时候开始使用CCTouch以及如何使其在CoCoS2DV3中工作?,cocos2d-iphone,touch,Cocos2d Iphone,Touch,我在coco2d v2 ccmenu中找不到任何对itemForTouch的引用,所以有人能告诉我这段代码的作用吗? if(![super-itemForTouch:touch])部分,以及如何使其在coco2d v3中工作 -(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { if (![super itemForTouch:touch]) { return NO; } } 谢谢您从哪里获得此

我在coco2d v2 ccmenu中找不到任何对itemForTouch的引用,所以有人能告诉我这段代码的作用吗? if(![super-itemForTouch:touch])部分,以及如何使其在coco2d v3中工作

-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
   if (![super itemForTouch:touch])  {
    return NO;  
}

}

谢谢

您从哪里获得此代码

ccmen.m中有一个
itemForTouch
。通过查看您发布的内容,我假设有人从
CCMenu
派生了一个类,重写了自己的
cctouchStart
,并调用了super的
itemForTouch
方法。在该方法中,它在所有附加的菜单项上循环,检查它们是否可见和启用,并查看触摸位置是否位于该菜单项的矩形内。如果没有触摸到任何菜单项,您发布的代码只会返回
NO

您不必手动调用此方法,这就是为什么它不在头文件中声明的原因。如果看不到您发布的代码的大图,我不明白为什么有人会从
CCMenu
子类化,假设他们甚至有合法的理由开始。在cocos2dv3中,还将介绍如何使用
CCButton
,当您使用基本cocos2d模板创建新项目时,将给出一个示例

编辑


在查看了您在注释中链接的代码后,我现在明白了创建菜单弹出类的目的。他所做的只是看看父母中是否有一个是弹出窗口,如果是的话,他会关闭弹出窗口,因为他知道弹出窗口上的按钮被触动了。要在V3中执行此操作,假设您有一些父节点充当
CCMenuPopup
。如果您觉得有必要,您甚至可以将其命名为相同的名称并重新创建这些类。

您好,谢谢。这是一个游戏教程的一部分,你可以在找到代码,文件是ccmenuppop.mCheck出我编辑的答案进一步解释。如果我的问题解决了您的问题,请将其标记为已接受。您可以在V3中创建一个从CCNode派生的菜单弹出类。对于CCB按钮,当按下其中一个按钮时,应调用您创建的方法关闭弹出窗口。要将答案标记为已接受,您可以单击问题旁边的灰色复选标记。