0

UIBezierPathを含むビューを作成しようとしています。これは現在機能しています。そのUIBezierPathにUIImages(ランダムな数の画像)を配置し、要求に応じて次のステップまたは前のステップにアニメーション化します。すべての画像を一度に、すべて同じ方向に向けます。

今、すべてのドキュメントを見てきましたが、理解できません。

だからうまくいけば、誰かが私を助けたり、正しい方向に私を向けたりすることができます。

お互いを追いかけている、お互いを獲得していない、すべてが異なる場所で始まっているいくつかのレースカーと比較できると思います。タッチで次のポイントに移動したいので、ループは必要ありません。

4

3 に答える 3

2

このチュートリアルをご覧ください。関連コード:

//create the image layer
CALayer *car = [CALayer layer];
car.bounds = CGRectMake(0, 0, 44.0, 20.0);
car.position = CGPointMake(160, 25);
car.contents = (id)([UIImage imageNamed:@"carmodel.png"].CGImage);
[self.view.layer addSublayer:car];

// animate it
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
anim.path = trackPath.CGPath;
anim.rotationMode = kCAAnimationRotateAuto;
anim.repeatCount = HUGE_VALF;
anim.duration = 8.0;
[car addAnimation:anim forKey:@"race"];

このアニメーションをすべてのレイヤー(画像)に追加します。

于 2012-04-05T07:09:09.020 に答える
1

おそらく、UIBezierPathsセグメントごとに1つずつ、の配列を作成する必要があります。それぞれがどこにあるかを追跡しUIImage、適切なセグメントに沿って移動するようにアニメーション化します。

これは、個別のステップがある場合にのみ機能します。プロパティを使用して移動をパス全体の一部に制限できないのは残念valuesですが、それは無視されます。CAMediaTimingFunctionサブクラス化して出力範囲を0から1以外に変更できるはずですが、その重要な部分はすべてプライベートです。

于 2012-04-12T02:56:26.113 に答える
0

オブジェクトをパス上に配置するために、strokeStartプロパティとstrokeEndプロパティを使用して0から1までの値を取得できます。

于 2012-07-26T06:42:21.883 に答える