Cocos Studioデータの読み込み
Cocos Studioで作成したアニメーション、UIデータをcocos2d-x3で読み込む例です。
Cocos StudioはWindows版です。
今回使用したバージョン
- Cocos2d-x 3.1
- Cocos Studio 1.5.0.1(Windows)
事前準備
必要なimport、usingの記述を加えます。
hファイル
#include "ui/CocosGUI.h" #include "cocostudio/CocoStudio.h"
cppファイル
using namespace ui; using namespace cocostudio;
Androidで動かすには、Android.mkファイルを編集し、cocostudio関連の2箇所を有効にします。
... # LOCAL_WHOLE_STATIC_LIBRARIES += spine_static LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static ... # $(call import-module,editor-support/spine) $(call import-module,editor-support/cocostudio) # $(call import-module,network) ...
エクスポートファイルの置き場所
Cocos StudioでエクスポートするとExportフォルダの下にフォルダとファイル一式がエクスポートされるので、
フォルダごとResourcesにコピーします。
Xcodeでプロジェクトに登録する場合は、”Create folder references for any added folders”を選択します。
AnimationEditor
// Cocos Studio アニメーションデータ取り込み ArmatureDataManager::getInstance()->addArmatureFileInfo("DemoPlayer/DemoPlayer.ExportJson"); // アニメーションオブジェクト作成 auto character = Armature::create("DemoPlayer"); character->setPosition(Point(visibleSize.width * 0.5f,visibleSize.height * 0.5f)); character->setScale(0.25f); this->addChild(character,100); // アニメーション実行 character->getAnimation()->play("killall");
UIEditor
作成したUIをレイヤーに追加
// UIレイヤー追加 Layout *layer = dynamic_cast<Layout*>(GUIReader::getInstance()->widgetFromJsonFile("SampleUIAnimation/SampleUIAnimation.json")); this->addChild(layer,200);
アニメーションを実行
※playActionByNameメソッドの第一引数はJSONファイル名のみで、フォルダ名は不要。
第二引数はアニメーション名。
// アニメーション実行 ActionManagerEx::getInstance()->playActionByName("SampleUIAnimation.json", "Animation1");
ボタンのイベントを追加
// ボタンのイベント追加 Button* testBtn = dynamic_cast<Button*>(layer->getChildByName("TextButton")); testBtn->addTouchEventListener(this, toucheventselector(HelloWorld::buttonClick)); } // ボタンをクリックした時の処理 void HelloWorld::buttonClick(cocos2d::Ref *sender, cocos2d::ui::TouchEventType type) { if(type == TouchEventType::TOUCH_EVENT_BEGAN) { } else if(type == TouchEventType::TOUCH_EVENT_MOVED) { } else if(type == TouchEventType::TOUCH_EVENT_ENDED) { } }
ビットマップフォントのテキストを変更
auto scoreLabel = dynamic_cast<TextBMFont*>(layer->getChildByName("ScoreLabel")); scoreLabel->setString("Score:0");