Edited at

Mac版 Cocos Studio 2で作成したGUI(.csb)ファイルをcocos2d-xへ読込み、ButtonとSliderにイベントを追加し利用する。

More than 3 years have passed since last update.


Headerファイル


Scene.cpp

#include "cocostudio/CocoStudio.h"

#include "cocosGUI.h"

*cocostudioって名前間違えやすいから注意


.csbファイルの読込


Scene.cpp


//3.3以降は、createNode
auto node = CSLoader::getInstance()->createNodeFromProtocolBuffers("Scene.csb");

node->setName("NODE");
this->addChild(node);


*Scene.csbをCocos Studio 2でつくっておく。後述するButtonとSliderも追加しておく。名前はそれぞれ"BTN"と"SLD"とした。

*nodoの名前を"NODE"と付けておいて、別の場所で参照できるようにしてある。


Buttonにイベントを追加


Scene.cpp


auto* btn = dynamic_cast<Button*>(this->getChildByName("NODE")->getChildByName("BTN"));
btn->addTouchEventListener([this](Ref* pSender, ui::Widget::TouchEventType type){

//touch
if (type == ui::Widget::TouchEventType::ENDED) {
//好きな処理
}
});


*Cocos Studio 2の方でつくったボタンの名前を"Button"と付けてある

*イベントリスナーは、ラムダ式で書いている。thisをキャプチャしておかないと、クラス内の別の関数が呼べない。


Sliderにイベント追加


Scene.cpp

Slider* slider = dynamic_cast<Slider*>(this->getChildByName("NODE")->getChildByName("SLD"));

slider->addEventListener([this](Ref *pSender, Slider::EventType type){

if (type == Slider::EventType::ON_PERCENTAGE_CHANGED)
{
Slider* slider = dynamic_cast<Slider*>(pSender);
int percent = slider->getPercent();
CCLOG("percent:%d",percent);
}
});


*Sliderのイベントは、ボタンのTouchEventと違うので注意する。