Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
Visual studio 2012 忽略对透明区域的触摸cocos2dx_Visual Studio 2012_Cocos2d X_Cocos2d Android - Fatal编程技术网

Visual studio 2012 忽略对透明区域的触摸cocos2dx

Visual studio 2012 忽略对透明区域的触摸cocos2dx,visual-studio-2012,cocos2d-x,cocos2d-android,Visual Studio 2012,Cocos2d X,Cocos2d Android,我有一个大小为480x800像素的图像,在一个角落有一个图标,我需要放置它。我想要的是忽略透明区域上的所有触摸,只检测图标所在的区域。 我找到了一个解决这个问题的方法,但它只是告诉要使用的代码。我需要确切地知道把代码放在哪里,因为我是一个初学者,对cocos2d不太了解,所以我希望有一个逐步的解决方案 不要使用glReadPixels,因为它受android驱动程序中的bug影响。您可以使用convertTouchToNodeSpace将CCTouch转换为图像坐标中的CCPoint,并读取给定

我有一个大小为480x800像素的图像,在一个角落有一个图标,我需要放置它。我想要的是忽略透明区域上的所有触摸,只检测图标所在的区域。 我找到了一个解决这个问题的方法,但它只是告诉要使用的代码。我需要确切地知道把代码放在哪里,因为我是一个初学者,对cocos2d不太了解,所以我希望有一个逐步的解决方案


不要使用
glReadPixels
,因为它受android驱动程序中的bug影响。您可以使用
convertTouchToNodeSpace
将CCTouch转换为图像坐标中的CCPoint,并读取给定点的图像像素

从包含半透明图片的文件创建CCImage,并在点击点读取一个像素;对于透明区域,它应该是{0,0,0,0}


别忘了检查点击是否在图片外,并使用公式在
CCImage::getData()
数组中创建像素索引
unsigned index=x*imageWidth+y

添加到对象类就可以了。您能详细解释一下吗?如果您有一个名为Button的类(可能是CCSprite的子类),您只需将此代码(使用c++重写)添加到该类中,并将此代码与CCTouchBegani一起使用即可理解您刚才所说的内容。还有一件事。如果我有3个与上述格式相同的图标,现在我想检测是否有任何图标被触摸,如果有任何图标确实被触摸,是哪一个,你会如何解决这个问题?每个图标由sprite显示,因此你可以在每个图标的图标坐标中获得触摸位置,而不是使用像素比较。换句话说,你们应该测试触摸是否碰到图标矩形,然后测试它是否碰到不透明区域。这就是我现在正在做的。有一个对象ccsprite大小为480x800的背景图像。然后有3个ccsprite对象,每个对象的大小为480x800,它们是放置在背景上的图标。除图标所在位置外,每个具有图标的图像都是透明的。如果你现在能告诉我如何解决这个问题?在这种情况下比较像素是否有效?如果是这样,我们如何从ccsprite对象和触摸的坐标中获取像素。从同一资源创建CCImage,它将保留此sprite的所有像素。如果ccsprite被放大或缩小,此解决方案将无法正常工作。