Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.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
Ios 通过检测不同的部分,用不同的颜色填充图像_Ios_Cocos2d X - Fatal编程技术网

Ios 通过检测不同的部分,用不同的颜色填充图像

Ios 通过检测不同的部分,用不同的颜色填充图像,ios,cocos2d-x,Ios,Cocos2d X,我有一幅风景画,我需要用不同的颜色来填充它 当我从调色板中选择颜色并开始在任何特定部分上拖动时,只有该部分应该得到颜色,即使我错误地将手指从该图像部分之外 所以基本上我需要检测图像的哪一部分我点击了,这样只有那一部分才有颜色 我正在Cocos2dx中开发这个应用程序,但是任何逻辑方面的帮助都是一个很好的起点 这是我想要的一个例子 注意:我知道我可以通过拍摄单独的图像,然后检测触摸来实现这一点,但这会使应用程序的大小增加很多MB 我想用户只能在图像的白色部分进行绘制。 如果上述情况属实,我想让您做

我有一幅风景画,我需要用不同的颜色来填充它

当我从调色板中选择颜色并开始在任何特定部分上拖动时,只有该部分应该得到颜色,即使我错误地将手指从该图像部分之外

所以基本上我需要检测图像的哪一部分我点击了,这样只有那一部分才有颜色

我正在Cocos2dx中开发这个应用程序,但是任何逻辑方面的帮助都是一个很好的起点

这是我想要的一个例子

注意:我知道我可以通过拍摄单独的图像,然后检测触摸来实现这一点,但这会使应用程序的大小增加很多MB


我想用户只能在图像的白色部分进行绘制。
如果上述情况属实,我想让您做的是,在TouchsMoved方法中,检查上一个触摸点和当前触摸点之间是否存在任何黑色(非白色)像素。

如果没有这样的黑色像素,那么就画出来,否则就不要画。

是的,我试过了,但是当你把手指从上图中的“心脏”中拿出来时,它仍然会填充颜色,因为它没有黑色像素。所以本质上,我们不能检测我们的手指是否进入了图像的其他封闭部分。我不明白你说的。假设用户的手指位于心脏的中心。因此,如果他现在将手指移向卡通的鼻子,同时移动触摸,将调用Moved方法,并且每次查询“连接最后一个触摸点和当前触摸点的线段”是否有黑色像素。最初不会有这样的点,但当他靠近心脏边缘并穿过心脏的黑色边界时,我们会得到一个黑色像素,这表明用户正在移出图像的心脏部分。我的想法是正确的吗?案例1:你说的案例是正确的,但例如,如果用户在擦拭心脏图像的内部,万一错误地触摸到心脏轮廓的边缘,那么根据你的代码,它将停止在touchesMoved中着色,并且必须再次点击心脏图像内部以继续填充颜色。案例2:即使用户没有点击黑色轮廓并有意想将手指取出,在这种情况下,根据您的要求,我将停止绘制,但请记住,我的手指仍处于触摸移动模式,如果用户希望再次进入心脏图像,它不会让它填充,因为我们已经停止填充颜色。