【发布时间】:2010-02-12 21:04:07
【问题描述】:
我正在创建一个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 上绘图。
【问题讨论】:
标签: iphone core-graphics cgpath