2009-08-17 46 views
1

我有一個例子,我繪製形狀,例如三角形(點A,B,C)。現在我想讓它動起來,以便點A,B,C移向點X,Y,Z(讓我們只是說點按鈕點擊)iPhone開發 - 基本繪圖和動畫問題

我在繪製的自定義視圖中使用drawRect:方法。我不希望我的觀點移動,我寧願要我的圖畫移動(因爲我有多個圖畫)。

任何指針?任何相關文章?

問候, 穆斯塔法

回答

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"]; 

這將從點0.0,0.0(左上角)超過兩秒鐘的過程動畫層至320.0,480.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)]; 
} 

網上有很多關於Core Animation的文章,但這應該讓你開始。讓我知道你是否需要澄清。

+0

感謝馬特,我會測試它,並會讓你知道它是怎麼回事。 – Mustafa 2009-08-19 04:54:47