Я создаю CGPath
, чтобы определить область в моей игре следующим образом:
CGPathMoveToPoint ( myPath, NULL, center.x, center.y );
CGPathAddLineToPoint( myPath, NULL,center.x + 100, center.y);
CGPathAddLineToPoint( myPath, NULL, center.x + 100, center.y + 100);
CGPathAddLineToPoint( myPath, NULL, center.x, center.y + 100);
CGPathCloseSubpath ( myPath );
Я знаю, что это просто квадрат и что я мог бы просто использовать другой CGRect
, но путь, который я хочу на самом деле создать, на самом деле не является прямоугольником (я сейчас только проверяю). И затем обнаружение области касания просто с помощью:
* +1007 *
Это все работает нормально, проблема в том, что CGPath
может перемещаться до 40 раз в секунду. Как я могу переместить его, не создавая новый? Я знаю, что могу сделать что-то подобное, чтобы «переместить» это:
center.y += x;
CGPathRelease(myPath);
myPath = CGPathCreateMutable();
CGPathMoveToPoint ( myPath, NULL, center.x, center.y );
CGPathAddLineToPoint( myPath, NULL,center.x + 100, center.y);
CGPathAddLineToPoint( myPath, NULL, center.x + 100, center.y + 100);
CGPathAddLineToPoint( myPath, NULL, center.x, center.y + 100);
CGPathCloseSubpath ( myPath );
Но я должен освободить и создать новый путь до 40 раз в секунду, что, я думаю, может привести к снижению производительности; это правда?
Я хотел бы иметь возможность перемещать его так же, как в данный момент я перемещаю некоторую CGRects
, просто устанавливая начало координат на другое значение, возможно ли это с CGPath
?
Спасибо.
РЕДАКТИРОВАТЬ: я забыл упомянуть, у меня нет GraphicsContext, поскольку я не рисую на UIView
.