【发布时间】:2011-02-26 00:12:14
【问题描述】:
我正在使用 Cocoa 为 Mac 编写游戏。我目前正在实施命中测试,并发现 CALayer 提供命中测试,但似乎没有实现 alpha 属性。由于有时我有很多 CALayer 堆叠在一起,所以我真的需要找到一种方法来确定用户实际要点击的内容。
我在想,如果我能以某种方式获得一个包含指向所有包含点击点的 CALayer 的指针的数组,我可以通过某种方式过滤它们。然而,到目前为止,我创建数组的唯一方法是:
NSMutableArray* anArrayOfLayers = [NSMutableArray array];
for (CALayer* aLayer in mapLayer.sublayers)
{
if ([aLayer containsPoint:mouseCoord])
[anArrayOfLayers addObject:aLayer];
}
然后按 CALayer 的 z 值对数组进行排序,然后检查该位置的像素是否为 alpha。然而,在排序和 alpha 检查之间,这似乎是一个令人难以置信的性能消耗。 (你甚至会如何检查 alpha?)
有什么办法吗?
【问题讨论】: