我创建一个CGPath
在我的游戏定义的区域是这样的:我怎样才能移动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
上绘图。
那不是移动整个图形上下文,而不是人的路?此外,我忘了提及我没有graphicscontext,因为我没有绘制UIView – 2010-02-12 21:16:44
@OscarMk:哎呀。抱歉。查看更新。 – kennytm 2010-02-12 21:28:55
谢谢,这将帮助我很多!我不需要移动所有的多边形,我只需要翻译我的观点,以前我应该想到这一点。在性能上有什么更好的创建一个新的cgpoint或使用CGAffine变换只是一个问题吗? – 2010-02-12 21:37:19