Я пишу игру для Mac, используя Какао. В настоящее время я внедряю тестирование на попадание и у меня есть основания полагать, что CALayer предлагает тестирование на попадание, но, похоже, не реализует альфа-свойства. Поскольку у меня иногда много CALayers, накладываемых друг на друга, мне действительно нужно найти способ определить, что пользователь действительно хотел щелкнуть.
Я думаю, что если бы я мог как-то получить массив, который содержит указатели на все CALayers, которые содержат точку щелчка, я мог бы как-то отфильтровать их. Однако единственный способ, которым я до сих пор создал массив, это:
NSMutableArray* anArrayOfLayers = [NSMutableArray array];
for (CALayer* aLayer in mapLayer.sublayers)
{
if ([aLayer containsPoint:mouseCoord])
[anArrayOfLayers addObject:aLayer];
}
Затем сортируйте массив по z-значениям CALayer, затем проходите проверку, является ли пиксель в местоположении альфа или нет. Однако, между сортировкой и альфа-проверкой это кажется невероятным скачком производительности. (Как бы вы проверили альфу?)
Есть ли способ сделать это?