我創建一個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