Adobe源碼泄漏?3行代碼搞定,F(xiàn)lash動畫無縫導(dǎo)入Android/iOS/cocos2dx(一)

[注] iOS代碼已重構(gòu),效率提升90%,200層動畫不卡。[2016.10.27]
項(xiàng)目介紹


項(xiàng)目名稱:FlashAnimationToMobile 源碼。 使用方法點(diǎn)這里

這是一個把flash中的關(guān)鍵幀動畫(不是序列幀)導(dǎo)出,然后在iOS/Android原生應(yīng)用中解析并播放的一個插件。除了原生App,它也能夠支持Cocos2dx(3.x)。

對于Flash軟件,則支持Flash CS3及以上版本及最新的Animate CC。

這個庫能夠滿足游戲,App開發(fā)中90%的2D動畫需求。
它可以用來做游戲中的人物動畫:走動,攻擊,跳躍,閃避等,以及UI特效,升級,轉(zhuǎn)場等。
也可以用于App動畫:秀場禮物,用戶升級,活動禮包,等等。

這個庫目前已在3個線上項(xiàng)目(2個游戲,一個App: android+iOS)中使用了。
它最大的特點(diǎn)就是:原生,關(guān)鍵幀動畫。

實(shí)際效果如下:

  • flash:


  • iOS:


  • android:


  • cocos2dx:


項(xiàng)目來由

最開始有把flash關(guān)鍵幀動畫導(dǎo)出的想法是當(dāng)初做cocos2dx開發(fā)游戲的時候。
當(dāng)時開發(fā)的一個游戲項(xiàng)目,模仿《刀塔傳奇》的動畫樣式和戰(zhàn)斗模式。
了解的朋友應(yīng)該知道,《刀塔傳奇》里面有很多英雄,每個英雄都有很多個動作。
一般情況下,這種復(fù)雜動畫應(yīng)該避免使用序列幀動畫(對內(nèi)存要求高),而應(yīng)該用更高效的關(guān)鍵幀動畫。


而當(dāng)初立項(xiàng)的時候,項(xiàng)目組的美術(shù)人員對flash比較熟悉,希望用flash來做各個英雄的動畫。更能節(jié)約時間。
而cocos2dx當(dāng)時還不能直接導(dǎo)入flash動畫。
于是,作為程序的我,就需要查閱各種資料,想解決方案。于是就有了這個項(xiàng)目。

我們的游戲當(dāng)初45個英雄,每個英雄9個動作,全部使用flash制作,并用這個庫來播放動畫。同屏20個英雄,無卡頓完美運(yùn)行。

看下我們游戲制作的flash原圖:


過了一年,我的主要工作從游戲轉(zhuǎn)移到app?,F(xiàn)在是在做秀場項(xiàng)目。
后來大家覺得送禮物的特效不夠炫,希望手機(jī)端送禮物時也能夠有網(wǎng)頁版的那種效果。


于是我就產(chǎn)生了把這個cocos2dx的動畫庫,移植到iOS和android中的想法。就是今天介紹的這個項(xiàng)目了。

用這個動畫庫來播放美術(shù)人員做出來的flash特效作為秀場禮物動畫??闪疃Y物豐富多彩,不再單調(diào)。

代碼實(shí)現(xiàn)及功能范圍

代碼分為兩部分:

1. flash/python腳本
2. 各平臺(iOS/Android/cocos2dx)解析庫。
  • 其中flash腳本的部分參考的是這幾篇文章:
  • python腳本是為了把json數(shù)據(jù)(.flajson文件)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)(.flabin文件),進(jìn)一步縮小文件體積,同時帶有一定的加密效果。
    • 其中cocos2dx的項(xiàng)目只支持二進(jìn)制格式,Android和iOS版本支持json和二進(jìn)制格式。
    • 二進(jìn)制格式的文件大小要比json格式小10倍左右,加載速度也比json快。

當(dāng)初在cocos2dx中做程序?qū)崿F(xiàn)的時候,我是完全把flash的運(yùn)行機(jī)制在cocos2dx中復(fù)制了一遍。
其中包含了,元件,層和關(guān)鍵幀的概念。
到后面移植App的時候,我的思路發(fā)生了變化,我覺得把層的概念淡化,然后在任何一幀,把不同層的圖片同時繪制。這種思路可能更簡單一些。
所以App的代碼實(shí)現(xiàn)邏輯,同cocos2dx版本的代碼有一定的區(qū)別。

項(xiàng)目中的代碼是最簡單的能夠使用的版本,功能和限制如下:
- 只能用圖片,不能用矢量圖
- 只能使用如下屬性:位置,縮放,旋轉(zhuǎn),切變,顏色疊加,透明度變化。
- cocos2dx版本計(jì)算content size的部分沒有實(shí)現(xiàn)。
- app版本我為不同分辨率手機(jī)做了適配,但是沒有編寫計(jì)算其size的方法,因?yàn)槲覜]有用到。
- 上述兩點(diǎn)如果有這種需求,則需要自行添加這部分代碼

雖說簡單,但是這個庫已經(jīng)能夠滿足90%的相關(guān)需求了。

如果感興趣,可以通過閱讀資料,為其增加矢量圖,濾鏡,遮罩等功能。這些都是可以實(shí)現(xiàn)的。

我在代碼關(guān)鍵部分都加了注釋。感興趣的可以圍觀一下。幫忙指出錯誤。

FlashAnimationToMobile 點(diǎn)此進(jìn)入。

推薦:

1小時學(xué)會:最簡單的iOS直播推流系列

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容