我正在处理的应用程序需要 4 像素的条形高度和全屏尺寸宽度。我需要能够选择这个 4px 条并移动它。我也不能改变这个栏的大小,它的高度必须是 4px。
如果我不使用 OpenGL 创建对象,这将不是什么大问题。 OpenGL 显然没有自己的选择功能,所以我需要自己编程。
最初经过研究,我构建了一个颜色选择器来识别对象。我的颜色选择器是如何工作的 x
和 y
我的手指触摸从 touchesBegan:
返回是我从 OpenGL View 的屏幕截图中抓取的像素。问题在于手指的位置根本不精确。如果我用鼠标,它就完美了……
我决定也许循环通过所选 x
的缓冲区和 y
但不幸的是,当图像存储在内存中并且缓冲区返回我的对象颜色的几种阴影时,OpenGL View 的屏幕截图会发生抗锯齿。我可以做一个比较颜色查找,看看它是否在颜色范围内,但这似乎过于复杂,因为我已经做了多少。另外,通过缓冲区骑自行车并不快。
我也想过也许只是记住我的线条在屏幕上的位置,如果我的手指靠近那个位置,就知道那是我想要选择并移动它的那个位置。
这个应用程序的 future 最多可以有 4 行,就像这样,我想要更安全的东西,而不是只知道它在内存中的位置。
有什么更好的方法来处理小对象的选择?
最佳答案
如何为四个对象维护一个框架数组,但将高度扩展到更易于管理的高度(8px 或更大)?然后,可以将较大区域内的触摸与数组进行比较(使用 CGRectContainsPoint)。如果命中,则在开始拖动之前“对齐”较小 (4px) 矩形的中心点。
我通过维护拖放的“放置目标”列表来做类似的事情,当它非常接近时它会捕捉到放置目标。不知道我是否很好地传达了这个想法,但它应该可以工作。
如果四个 4px 矩形将是连续的或非常靠近的,您必须能够使所选的一个突出,否则用户将无法分辨他们正在拖动哪个 - 但您可以这样做通过使其更大(可能是 6-8 像素)然后将其放在前面,以便覆盖其相邻的邻居。
我猜更多的是一个想法而不是一个答案。
关于ios - 处理小物体上的手指检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093241/