今 天研究了一下cocostudio,包括動畫編輯器和UI編輯器,其他的倆個感覺資料很少,就沒有看了,等以后再說吧。先來說一下動畫編輯器的使用吧。我 將把我用到的資源和這個cocostudio在文章的最后留下下載地址,供大家使用。關於這個編輯器的使用網上也是有不少資料的,大家可以去看看,我這里 說一下我遇到的問題。第一就是選錯了編輯器,本來要編輯的是動畫,開始的時候卻選擇了UI編輯器,讓我弄了半天,所以大家在選擇的時候選對了。然后就是新 建工程什么的,以及cocostudio中的一些工具欄等等這個都很簡單,我這里留個好的文章鏈接和cocostudio的用戶手冊,有了這倆個就足夠 了,任何關於軟件使用的問題應該都可以解決,CocoStudio動畫編輯器簡易教程,CocoStudio幫助手冊。
新建工程命名為test1,然后導入資源,這里我要創建倆個動畫。在形體模式下將一張動畫拖動到渲染區,命名這個層為layer1,然后切換到動畫模式,將動作名稱改為run。
接下來的是關鍵的步驟,本人在這步上犯了不少錯,按我如下的方法進行操作。
上 圖中先選中了layer1,然后將資源區的精靈幀拖動到layer1上邊,如果你是選錯了編輯器,怎么都不會拖過去的,然后你就可以改它的一些屬性,比如 是否循環播放,播放間隔什么的。為了說明幾個誤區,我們再來新建一個動畫。在動作列表新建一個動畫命名為kill,然后選中這個動畫名稱后切換到形體模 式,這個時候在渲染區是沒有內容的,但是在對象結構中有一個layer1。我們從資源窗口選中一張圖片添加到渲染區,然后再次切換到動畫模式。切換過來以 后的整個界面如下。
這 個時候你雖然在動作列表選中的是kill,或者是run,但是在動畫幀中layer1和layer2都會顯示出來的。所以不要以為一個動畫中包含了倆個 layer層,當然了一個動畫中是可以包含多個layer層的,但是在動畫幀窗口所有動畫的動畫幀都會顯示出來的。然后就是和上邊相同的操作了。
這 個就是動畫編輯器的基本使用了,當然骨骼動畫什么的我也不會用,有興趣的話你可以教我。下面來說說怎么在程序中使用我們生成的東西。我在網上看了不少的文 章,他們的寫法還都不一樣,可能是版本的問題吧,現在我在cocos2dx2.2的版本下使用一下我們做好的動畫。如果你還沒有將上一步的工程導出,先導 出來,在工程路徑下會有一個export的文件夾,將這個文件夾復制到你工程的resource文件夾下。下面就上代碼了。
1 |
//在工程中必須包含這倆句代碼 |
2 |
#include "cocos-ext.h" |
3 |
using namespace cocos2d::extension; |
1 |
bool HelloWorld::init() |
2 |
{ |
3 |
////////////////////////////// |
4 |
// 1. super init first |
5 |
if ( !CCLayer::init() ) |
6 |
{ |
7 |
return false ; |
8 |
} |
9 |
10 |
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); |
11 |
12 |
//1、從導出文件異步加載動畫,這個只需要做一次,一般放在我們進入游戲和其他的資源一起加載的時候 |
13 |
//參數的順序要對,按照我的寫就可以了 |
14 |
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo( "Export/test10.png" , |
15 |
"Export/test10.plist" , "Export/test1.ExportJson" ); |
16 |
17 |
//2、創建CCArmature,里邊的參數是創建的工程名稱,參數一定要寫對了 |
18 |
CCArmature * armature1 = CCArmature::create( "test1" ); |
19 |
//3、playByIndex()中傳入的參數是動畫的編號,是從0開始的數字,在我的項目中0代表的是run的動畫 |
20 |
armature1->getAnimation()->playByIndex(0); |
21 |
//設置一些屬性然后添加 |
22 |
armature1->setPosition(ccp(visibleSize.width/2,visibleSize.height/2)); |
23 |
this ->addChild(armature1); |
24 |
25 |
//從第二步開始繼續創建CCArmature,我不知道是否還有其他的方法 |
26 |
CCArmature * armature2 = CCArmature::create( "test1" ); |
27 |
//等同於armature2->getAnimation()->playByIndex(1);,輸入動畫的名稱 |
28 |
armature2->getAnimation()->play( "kill" ); |
29 |
armature2->setPosition(ccp(visibleSize.width/3,visibleSize.height/3)); |
30 |
this ->addChild(armature2); |
31 |
32 |
return true ; |
33 |
} |
最后留下資源的下載地址。下載資源和源代碼