我正在创建一个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
,但我希望实际创建的路径实际上并不是一个矩形(我现在只是在测试)。然后简单地检测触摸区域:
if (CGPathContainsPoint(myPath, nil, location, YES))
这一切都很好,问题是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
.