0

這基本上是一個簡單的問題,我不能得到解決......使用它的更新位置和傾斜度來移動/旋轉物體?

  1. 所以,我有一定的框架UIImageView對象在其中,我實現CAAnimation與旋轉和平移,以及它位於新座標(x,y)處,並已旋轉了一定的角度。

  2. 此動畫效果非常好。但是如果我再次從THAT狀態進行旋轉和移動,我希望對象在旋轉後使用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:method中的對象旋轉。所以,在你的cas中,你應該申請:

-(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 
} 

其中angle是一個整數計數器的動畫(步)值爲0,1,2,3。我的步驟是M_PI_4。有可能是一個更好的解決方案的問題,但這應該是竅門

+0

有想法!史詩般的回答:) – Legolas 2011-12-30 11:01:27

+0

@Micheal:有沒有機會聊聊天?如果你能清除一些疑問,我會很棒的... – Legolas 2011-12-30 12:10:48