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
1 秒間に最大 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 );
しかし、1 秒あたり最大 40 回、新しいパスを解放して作成する必要があり、パフォーマンスが低下する可能性があると思います。これは本当ですか?
CGRects
原点を別の値に設定するだけで、現在移動しているように移動できるようにしたいのですが、これは可能CGPath
ですか?
ありがとうございました。
編集: に描画していないため、GraphicsContext がないことを忘れていましたUIView
。