タッチを使用した線の描画のように、キュービックベジェ曲線をソースポイントから宛先ポイントに移動したいのですが、私の場合はタッチではありません。または、シーンが呼び出されたときに描画メソッドまたは更新メソッドだけで言うことができます(ベジェ曲線に沿ったスプライトの動きではありません) )。
私のコードは->ここでは、1つのスプライト(1つの小さな画像行)を取り、曲線ポイントの助けを借りて曲線パスを作成します(シーンを呼び出してから、直接曲線パスを表示します)
しかし、始点から終点までの適切な曲線移動アニメーションが必要です。
curvePoints=[[NSMutableArray alloc]init];
for (CGFloat t = 0.0; t <= 1.00001; t += 0.005)
{
CGPoint point = CGPointMake(
_bezierPoint(t,237, 320,423,609),
_bezierPoint(t, 319, 461,529,534));
CCSprite*path=[CCSprite spriteWithFile:@"path.png"];
[self addChild:path];
[path setPosition:[[CCDirector sharedDirector]convertToGL:point]];
[curvePoints addObject:[NSValue valueWithCGPoint:[[CCDirector sharedDirector]convertToGL:point]]];
}
また、次のような draw メソッドを使用してみました。
-(void)draw{
CGSize s = [[CCDirector sharedDirector] winSize];
CGPoint point1 = CGPointMake(237, 705);
CGPoint point2 = CGPointMake(320, 563);
CGPoint point3 = CGPointMake(423, 495);
CGPoint point4 = CGPointMake(609, 490);
[curvePoints addObject:NSStringFromCGPoint(point1)];
[curvePoints addObject:NSStringFromCGPoint(point2)];
[curvePoints addObject:NSStringFromCGPoint(point3)];
[curvePoints addObject:NSStringFromCGPoint(point4)];
glEnable(GL_LINE_SMOOTH);
for(int i = 0; i < [curvePoints count]; i+=2)
{
CGPoint origin = CGPointFromString([curvePoints objectAtIndex:i]);
CGPoint control1 = CGPointFromString([curvePoints objectAtIndex:i+1]);
CGPoint control2 = CGPointFromString([curvePoints objectAtIndex:i+1]);
CGPoint destination = CGPointFromString([curvePoints objectAtIndex:i+1]);
ccDrawCubicBezier(origin, control1, control2, destination, 100);
}
}
しかし、ここでも同じ問題があります。シーンを呼び出すと、3 次曲線が直接表示されます。
この問題から私を助けてください、私の下手な英語で申し訳ありません、どんな助けでも感謝します