[原創]SpriteKit+Swift學習筆記(二)-簡單動畫

相信不少人剛接觸一個遊戲開發框架,都會首先關注動畫如何實現。今天就來簡單說一下動畫是如何實現的。
廢話很少說,上代碼:數組

var textureAtlas = SKTextureAtlas(named: "bird")
var textures = NSMutableArray()
for var i = 1; i <= textureAtlas.textureNames.count; i++ {
  textures.addObject(textureAtlas.textureNamed("bird-0\(i).png"))
}
var flyAnimation = SKAction.animateWithTextures(textures, timePerFrame: 0.5)

這裏咱們先考慮一個鳥飛行的動畫:首先,把你的動畫文件(幾個動做連續的png)放置在一個文件夾中,命名爲bird。而後建立一個紋理集,如上面代碼第一行,讀取文件夾bird。其次建立一個紋理數組,而後用for循環,將各個png紋理添加進去。最後只要用skaction就能夠播放了,是否是很簡單。
這裏開發時可能會遇到幾個問題:
1.TextureAtlas究竟是什麼類型,不能直接用做數組嗎?
不是,它的做用只是獲取一組紋理,返回的是紋理集對象。並且若是你想知道里面有多少個紋理,只能經過它裏面有多少紋理的名字來判斷。
(@property(nonatomic, readonly) NSArray *textureNames)
紋理集的名字集合,是一個數組類型的值。
2.爲何取出紋理中的紋理名字要用上面代碼中所示格式呢?爲何不是bird_1和bird_2這樣的形式?
坦白講,我也不是很清楚具體的命名規則,可是你能夠打印紋理集內部的內容,結果以下:框架

SKTextureAtlas 'bird' 4 textures:
 (
    "SKTexture'bird-01.png' (34 x 24)",
    "SKTexture'bird-02.png' (13 x 24)",
    "SKTexture'bird-04.png' (34 x 24)",
    "SKTexture'bird-03.png' (13 x 24)"
)

因此若是你想獲取到裏面的紋理名字,只能用上面的那種形式,若是你獲取紋理失敗,能夠打印出來,看看你的紋理被命名成了什麼。若是有人知道爲何這樣命名,很是歡迎指出。
3.爲何個人動畫只能播放一遍?
若是是剛開始學習的話,多是你沒有調用repeat,若是須要動畫反覆播放,須要學習

若是有其餘疑問和錯誤,歡迎一塊兒交流,互相進步。動畫

相關文章
相關標籤/搜索