AnimatePacker動(dòng)作打包工具,方便自己編輯動(dòng)作,節(jié)省大量的程序代碼!AnimatePacker是一款動(dòng)畫(huà)編輯器,它是利用圖片組合工具導(dǎo)出的plist文件,然后編輯動(dòng)畫(huà),可添加復(fù)制幀,編輯翻轉(zhuǎn)以及更改速度等等,操作簡(jiǎn)單方便實(shí)用。
開(kāi)發(fā)背景:
我一直比較吐槽cocos2d-x那個(gè)動(dòng)畫(huà)加載方式,一個(gè)簡(jiǎn)單動(dòng)畫(huà)的加載,就需要寫(xiě)十幾行代碼。其中加載的代碼占了好多,我們可以通過(guò)刷循環(huán)簡(jiǎn)化。也就是說(shuō),理論上至少可以減少大約一半的量。
但是你刷循環(huán)簡(jiǎn)化有個(gè)前提:png的排列必須十分規(guī)律,否則是無(wú)法使用的。并且,不同的動(dòng)作有不同的幀數(shù)和不同的delay,你每個(gè)都要自己寫(xiě)。這毫無(wú)疑問(wèn)是一個(gè)非常繁瑣的過(guò)程。
于是我開(kāi)發(fā)了一個(gè)工具AnimatePacker,專門(mén)解決這個(gè)問(wèn)題。顧名思義,AnimatePacker就是一個(gè)動(dòng)作打包的小工具,可以很方便的自己編輯動(dòng)作。由此節(jié)省大量的程序編碼。
AnimatePacker使用:
這個(gè)工具要和TexturePacker等工具配合使用,因?yàn)樾枰麄儊?lái)提供plist。另外,要使用這個(gè)工具,必須先熟悉TexturePacker等工具,以及cocos2d-x的動(dòng)畫(huà)代碼。
打開(kāi)界面,一目了然。熟悉cocos2d-x編程的人,肯定知道這四個(gè)框是什么。
Plists:所有的Plist列表,拖動(dòng)plist文件到AnimatePacker窗口上,就可以加載。
Animations:所有的動(dòng)作列表,點(diǎn)擊“攝像機(jī)”按鈕可以新建動(dòng)作,雙擊可以編輯Name和Delay。
SpriteFrames:當(dāng)前Animation對(duì)應(yīng)的SpriteFrames列表,拖動(dòng)可以排序。
Sprites:所有的備選Spirte,你可以拖動(dòng)Spirte到SpriteFrames框下面。
簡(jiǎn)單使用步驟:
1.拖動(dòng)plist文件到AnimatePacker窗口
2.點(diǎn)擊攝像機(jī),生成新的Animation,在Animations框中編輯Name和Delay
3.從Sprites里拖動(dòng)Sprite到SpriteFrames,拖動(dòng)SpriteFrame可排序
就這樣不斷的編輯和生成即可。
最后,我們點(diǎn)擊保存,就可以輸出一個(gè)自己的xml。這里我們就叫他“1111.xml”好了。
解析代碼使用
解析1111.xml需要用到下面三個(gè)文件:
AnimatePacker.h AnimatePacker.cpp Singleton.h //需要導(dǎo)入的支持文件
解析代碼非常簡(jiǎn)單,只有兩個(gè)接口:
void AnimatePacker::loadAnimate(char *path);//加載xml里面的動(dòng)畫(huà) cocos2d::CCAnimate* AnimatePacker::getAnimate(char *name);//獲取指定名稱的動(dòng)畫(huà)
具體寫(xiě)起來(lái)大約是這樣的:
AnimatePacker::getInstance()->loadAnimate("1111.xml"); CCSprite *sprite=CCSprite::spriteWithSpriteFrameName("bomb_dead0.png"); sprite->setAnchorPoint(CCPointZero); sprite->setPosition(ccp(size.width/2, size.height/2)); sprite->runAction(CCRepeatForever::actionWithAction(AnimatePacker::getInstance()->getAnimate("aaa"))); addChild(sprite,1);
AnimatePacker采用Qt編寫(xiě),也就是說(shuō)可以跨多個(gè)平臺(tái)。但目前只有win32版,因?yàn)閙ac下我還沒(méi)配qt開(kāi)發(fā)環(huán)境,稍后提供。