#87 CALayer 實作:透過 Core Animation 創造動感 BoogieBot
這次聽課複習時,發現了 BoogieBot 的介紹,決定趁機練習一下。
Published in
7 min read 9 hours ago
專心貫注整堂課是相當具有挑戰性的,有時會漏掉精彩的內容,在這次重聽課程的過程中,留意了課堂上介紹的 Develop in Swift Explorations 裡 2–2 Play With Programs 的 BoogieBot,對這個主題進行了研究。這次實驗了 CALayer 和 Core Animation 的相關 API,並通過實際動手操作來加深對這些工具的理解。
APP螢幕GIF:
原範例中只有一個機器人在跳舞,但我們將其擴展為四個機器人同時進行精彩的舞蹈表演!之後有時間的話,再擴展動作的招式。
APP螢幕截圖:
這次練習到的 API:
- CATextLayer: 這是一個專門用於顯示文字的
CALayer
子類,允許我們直接在視圖上顯示和處理文字,並且支持各種屬性設定,例如字型、顏色、對齊方式等。 - CATransform3DIdentity: 這個常數代表了不進行任何變換的 3D 變換矩陣,通常用於重置圖層的變換狀態,讓圖層恢復到預設的狀態。
- CATransform3DMakeTranslation: 這個方法用於創建一個 3D 平移變換矩陣,允許我們在 X、Y 和 Z 軸上移動圖層。這是進行動畫平移時常用的工具。
- CATransform3DMakeRotation: 這個方法用於創建一個 3D 旋轉變換矩陣,根據指定的角度和旋轉軸進行旋轉。這使得我們可以將圖層旋轉到所需的角度。這裡我們用於創建平移變換,使機器人的腿向上抬起或身體左右搖擺。
- CABasicAnimation: 這是 Core Animation 的一個基本動畫類,允許我們在
CALayer
上創建簡單的動畫。通過設置動畫的keyPath
、fromValue
、toValue
和其他屬性,我們可以實現各種動畫效果,如顏色變化、形狀變化等。
程式修改來源
這次的程式主要修改自以下範例:
感謝大神提供的範例。
我們創建了一個名為 BoogieBot 的機器人,並讓它們按照預定的動作進行跳舞。以下是編舞動作的實現:
func botDoMoves(boogieBot:BoogieBot){
boogieBot.doMoves([.fabulize,
.leftArmUp, .rightArmUp,
.shakeItLeft, .shakeItRight, .shakeItCenter,
.leftLegUp, .leftLegDown,
.rightLegUp, .rightLegDown,
.rightArmDown, .leftArmDown,
.leftArmUp, .rightLegUp,
.leftArmDown, .rightLegDown,
.rightArmUp,.leftLegUp,
.leftArmDown, .leftLegDown,
])
}
這些 API 的結合使得我們能夠創建出各種動態效果和互動體驗,從而使應用界面更加生動有趣。這次的實踐也幫助我更加熟悉如何在實際應用中有效利用這些工具,來實現自定義的動畫和界面效果。