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