我一直在嘗試創建一系列動畫,依次處理撲克牌中的三張牌。我只想爲這三張牌的位置製作動畫 - 比方說第一張動畫立即在第一張牌的位置開始並持續0.4秒,第二張在持續時間相同的0.4秒後開始,最後一張在0.8秒後開始。我無法弄清楚如何做到這一點!下面的代碼不起作用。也許我需要使用CAGroupAnimation
,但我不知道如何在同一個屬性上製作一組連續的動畫 !如何鏈接三個不同對象上相同屬性的動畫序列?
CGFloat beginTime = 0.0;
for (Card *c in cards) {
CardLayer *cardLayer = [cardToLayerDictionary objectForKey:c];
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position"];
anim.fromValue = [NSValue valueWithCGPoint:stockLayer.position];
anim.toValue = [NSValue valueWithCGPoint:wasteLayer.position];
anim.duration = 0.4;
anim.beginTime = beginTime;
beginTime += 0.4;
cardLayer.position = wasteLayer.position;
[cardLayer addAnimation:anim forKey:@"position"];
…
}
所有這一切都很好,除非你想要圖層保留最後的「位置」屬性。 – wcochran 2012-04-20 15:29:24
是的 - 這就是我在線前的最後一段。使用包含在「CATransaction」中的帶有完成塊的顯式動畫,您可以根據需要計算它們的時間(甚至是重疊),完成塊爲您提供了設置最終位置的地方。 – rickster 2012-04-23 07:00:40