0

...だから更新された位置と傾きを使用してオブジェクトを移動/回転させますか?これは基本的に私の周りに得ることができない、単純な問題であり、

  1. 、私はその上に、私は回転と平行移動とCAAnimationを実装し、特定のフレームのUIImageViewのオブジェクトを持っており、新しい座標(x、y)にあり、ある程度回転しています。

  2. このアニメーションは美しく動作します。しかし、私が再びその状態から回転と動きをすると、そのオブジェクトは回転後にSTEP 1の新しいフレームと新しいプロパティを使用し、新しい角度で再び回転します。私は再び回転をしようとすると、今のよう

は、それは私がどのように継続することができ

And by this I mean... If I have a square of frame (100, 200, 10, 10), and I rotate it by 45 degrees, the shape is now a different square, with different frame size and end points compared to the original square, and I implement a new rotation by (say) 152 degrees on it and it needs to perform a rotation on the newer square... But it turns out that it uses the same frame size as the previous one (x,y, 10, 10).

...(初期化時に)その標準状態&フレームサイズを使用し、その上で回転を行い、オブジェクトをその更新された位置および状態で回転/移動させること。


注:(アニメーション用のコードを参照する必要がある場合)

これは単純な回転や移動を伴う私のアニメーションのためのコードです! http://pastebin.com/cR8zrKRq

答えて

1

animationDidStop:メソッドで回転ステップを保存し、オブジェクトの回転を更新する必要があります。だから、あなたのCASに、あなたが適用されるべきである:

角度が値0,1,2,3とアニメーション(段階)の整数カウンタである
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag 
{ 
    //angle is global 
    CATransform3D rotationTransform = CATransform3DMakeRotation((angle%4)*M_PI_4, 0, 0, 1); 
    [object.layer setTransform:rotationTransform]; 
    object.center = tempFrame; //already there 
} 

。私のステップはM_PI_4です。おそらくこの問題に対するより良い解決策がありますが、これはトリックを行うべきです

+0

アイデアを得ました!叙事詩の答え:) – Legolas

+0

@Micheal:あなたはチャット以上の時間を持って任意のチャンス?あなたがいくつかの疑念を明らかにすることができれば、素晴らしいと思います... – Legolas

関連する問題