天天看點

Cocos2d-JS動畫

與動作密不可分的還有動畫,動畫又可以分為場景過渡動畫和幀動畫。場景過渡動畫我們在以往介紹過,這一個我們隻介紹幀動畫。

幀動畫

幀動畫就是按一定時間間隔、一定的順序、一幀一幀地顯示幀圖檔。我們的美工要為精靈的運動繪制每一幀圖檔,是以幀動畫會由很多幀組成,按照一定的順序切換這些圖檔就可以了。

在cocos2d-js中播放幀動畫涉及到兩個類:cc.animation和cc.animate,類圖如下圖所示,cc.animation是動畫類,它儲存有很多動畫幀,cc.animate類是動作類它繼承于cc.actioninterval類,屬于間隔動作類,它的作用是将cc.animation定義的動畫轉換成為動作進行執行,這樣我們就看到動畫播放的效果了。

Cocos2d-JS動畫

幀動畫相關類圖

執行個體:幀動畫使用

下面我們通過一個執行個體介紹一下幀動畫的使用,這個執行個體如下圖所示,點選go按鈕開始播放動畫,這時候播放按鈕标題變為stop,點選stop按鈕可以停止播放動畫。

Cocos2d-JS動畫

幀動畫執行個體下面我們再看看具體的程式代碼,app.js中的helloworldlayer的構造代碼代碼如下: 

app.js中的helloworldlayer中的onaction函數代碼如下:

上述第①行代碼是建立一個animation對象,它是動畫對象,然後我們要通過循環将各個幀圖檔放到animation對象中。第②行是獲得幀圖檔的檔案名。第③行代碼是通過幀名建立精靈幀對象,第④行代碼把精靈幀對象添加到animation對象中。

第⑤行代碼animation.setdelayperunit(0.15)是設定兩個幀播放時間,我們這個動畫播放是4幀。第⑥行代碼animation.setrestoreoriginalframe(true)是動畫執行完成是否還原到初始狀态。第⑦行代碼是通過一個animation對象建立animate對象,第⑧行代碼this.sprite.runaction(cc.repeatforever(action))是執行動畫動作,無限循環方式。

第⑨行代碼this.sprite.stopallactions()停止所有的動作。

更多内容請關注最新cocos圖書《cocos2d-x實戰:js卷——cocos2d-js開發》

歡迎加入cocos2d-x技術讨論群:257760386

《cocos2d-x實戰 js卷》現已上線,各大商店均已開售:

歡迎關注智捷ios課堂微信公共平台,了解最新技術文章、圖書、教程資訊

Cocos2d-JS動畫