2009-08-17 10 views
1

私は、私は形を描いている場合があります。三角形(点A、B、C)。今、私はポイントA、B、CがポイントX、Y、Zに向かって移動するようにアニメーションを作成したいと思います。(ボタンをクリックするだけです)iPhoneの開発 - 基本的な描画とアニメーションの質問

私は描画のために私のカスタムビューで使用しています。私は私のビューを動かすことを望んでいない、私はむしろ(私は複数の図面を持っているので)私の図面を移動したい。

任意のポインタ?すべての相対的な記事?

よろしく、 ムスタファ

答えて

1

コアアニメーションが事のこのタイプに適したソリューションです。パスに応じてシェイプを描き、基本アニメーションまたはキーフレームアニメーションを使用してアニメートすることができるCAShapeLayerがあります。あなたは、ボタンのクリックでこのような何かを行うことができます。

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"]; 
[animation setFromValue:[NSValue valueWithCGPoint:CGPointMake(0.0, 0.0)]]; 
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(320.0, 480.0)]]; 
[animation setDuration:2.0f]; 
[shapeLayer addAnimation:animation forKey:@"positionAnimation"]; 

これは2秒間にわたって320.0、480.0(右下)にポイント0.0、0.0(左上隅)からレイヤーをアニメーション化します。レイヤーにアニメーションを追加すると、すぐに再生が開始されます。あなたは(ポストから確認されませんでした)アニメーションを回転させるために探しているなら、あなたはこれを行うことができます:

CABasicAnimation *rotationAnimation; 
rotationAnimation = [CABasicAnimation 
      animationWithKeyPath:@"transform.rotation.z"]; 

[rotationAnimation setFromValue:DegreesToNumber(0)]; 
[rotationAnimation setToValue:DegreesToNumber(360)]; 
[rotationAnimation setDuration:2.0f]; 
[rotationAnimation setRepeatCount:10000]; // keep spinning 

[shapeLayer addAnimation:rotationAnimation forKey:@"rotate"]; 

をDegreesToNumberは、度をラジアンに変換し、のNSNumberオブジェクトを返すヘルパー関数です:

CGFloat DegreesToRadians(CGFloat degrees) 
{ 
    return degrees * M_PI/180; 
} 

NSNumber* DegreesToNumber(CGFloat degrees) 
{ 
    return [NSNumber numberWithFloat: 
      DegreesToRadians(degrees)]; 
} 

コアアニメーションについては、ウェブ上で多くの記事がありますが、これはあなたを開始するはずです。明確化が必要な場合はお知らせください。

+0

ありがとうマット、私はそれを試して、それがどのように行っているかを知らせます。 – Mustafa