ControlButtonをCocosBuilderで設置してCocos2d-xで連携する
CocosBuilderで、ControlButtonを設置
とりあえず真ん中下くらいに表示されるように設定は以下のようにします。 あと、Cocos2d-x側で扱えるようにも設定しておきます。
- Doc root varを選択し「mStartConrolButton」を入力
- Positionをパーセントにし、x=50.0, y=20.0を設定
- Selectorに「tappedStartButton」を入力
- Targetを「Document root」に指定
- Titleに「START」を入力
- Font sizeを「24.00」に指定
- Preferred sizeをパーセント指定にして、width=20.0, height=12.0
- Sprite frameは、以下にあるサンプル画像を利用
cocos2d-x-3.0alpha0-pre/samples/Cpp/TestCpp/Resources/ccb
わかりやすいようにTimelineにも名前を設定
こんな感じです。
あとSceneのクラスで判別できるようにCCLayerにclass名を設定。
これを設定しないとMenuItemやControlButtonのSelectorをキャッチできませんのでご注意ください。
ここまでできたら「File > Publish」してXcodeにaddします。
Cocos2d-x側でControlButtonのSelectorをキャッチする
【TitleScene.h】
class TitleScene : public Layer , public CCBSelectorResolver /** CocosBuilderからメニューとかコントロールボタンを取得するのに必要 */ { // CCBSelector virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(Object* pTarget, const char* pSelectorName); virtual Control::Handler onResolveCCBCCControlSelector(Object * pTarget, const char* pSelectorName); // ※add Startボタンのタップイベント用 void tappedStartButton(Object * pTarget, Control::EventType pControlEventType); public: // コンストラクタ、デストラクタ TitleScene(); virtual ~TitleScene(); // createメソッド CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(TitleScene, create); };
【TitleScene.cppのonResolveCCBCCControlSelectorを修正】
Control::Handler TitleScene::onResolveCCBCCControlSelector(cocos2d::Object *pTarget, const char *pSelectorName) { CCLOG("name = %s", pSelectorName); // ※add Startボタンのタップイベントを結びつける CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "tappedStartButton", TitleScene::tappedStartButton); return NULL; } // ※add タップ時の処理 void TitleScene::tappedStartButton(Object * pTarget, Control::EventType pControlEventType) { CCLOG("tappedStartButton eventType = %d", pControlEventType); }
起動してSTARTボタンを押してみる。
ログがバッチリでてます。
これでControlButtonとの紐付けも完了です!