2011-12-04 47 views
2

我向Calayer添加了一個CAKeyframeAnimation和Key「SpeedBoat」。現在我正試圖在動畫期間更改動畫的速度。改變正在進行的CAKeyframeAnimation動畫的速度

[[self.shipLayer animationForKey:@"SpeedBoat"] setSpeed:([[self.shipLayer animationForKey:@"SpeedBoat"] speed] + deltaTime)]; 

這條線似乎有錯誤。但我沒有得到任何調試信息。 這裏有什麼問題?是否有可能改變正在進行的動畫的速度?

這將是非常好的,如果有人可以幫助我:)

問候 Xen的

回答

2

是的,你絕對可以改變動畫的速度。這是因爲CAKeyframeAnimation確認協議CAMediaTiming

蘋果在他們的Animation Types and Timing Programming Guide中解釋了這一點。

查看Timing, Timespaces, and CAAnimation上的部分。

具體來說:

「的動畫或層的速度屬性指定該縮放因子。例如,附加到與具有2的速度值的時分 - 空分的層10第二動畫會。需要5秒鐘顯示(速度的兩倍),如果該圖層的子圖層也定義了速度係數2,則其動畫將在1/4時間內顯示(超圖層的速度*子圖層的速度)。 「

我還可以向您指出一些優秀視頻的方向嗎?看一看:

WWDC 2010 Sessions 424 and 425 Core Animation in Practice Parts 1 and 2

WWDC 2011 Session 421 Core Animation Essentials

Developer Videos Session 716 Core Animation Techniques for iPhone and Mac

你甚至可以改變動畫的速度,以有效地 「凍結」 了。這對於暫停和恢復非常有用。雖然有一點需要注意的是,如果應用程序背景不清或清除內存,它將無法正常運行。你必須手動處理。

Technical Q&A QA1673,我的回答這個問題,關於該過程的詳細信息:

Is there an issue with updating a CALayer position while the layer is paused?