Cocos2d 3.xにおけるbuttonの使用


Cocos 2 d-x 3.xにはcocosGUIのWidgetをcococos 2 d-x extensionのコントロールに置き換える傾向があり、Lambda式のようなC++11のいくつかの新しい特性が採用され始めた.次に、cococosGUIにおけるWidgetの使用およびイベントの追加をcocos2d::ui::Buttonの使用で示す.
cococosGUIのすべてのコントロールはWidgetから継承され、ファイル名はiOS標準コントロールのような命名方法を採用しています.例えば、UIButtonUITextFieldなどです.これらのコントロールもiOSのやり方を参考にしているはずなので、iOSアプリケーションの開発に詳しい人にとっては良いことです.UIButtonは、ユーザクリックイベントを提供するためのコントロールであり、画像および文字タイトルを表示することができ、異なる状態(NORMALおよびSELECTED)で異なる画像を表示することができる.ユーザーが(touchまたはclick)ボタンをクリックすると、イベントがトリガーされます.この動作は、ボタンにイベントリスナー(EventListener)を追加することでキャプチャできます.次に、ボタンを作成します.
#include <CocosGUI.h> using namespace ui; // Button  Button *btn = Button::create("normal_menu.png", "press_menu.png"); // , ( 、 、 ) btn->setTitleText("Go  "); btn->setTitleFontSize(28); //  btn->setPosition(Vec2(200, 200)); // Tag , , Widget , iOS UIView tag 。 btn->setTag(1002); //  this->addChild(btn);
ボタンはモバイルプラットフォームとPC側で傍受するイベントが異なり、モバイル側は一般的に傍受する
Touchイベント、PC側はマウスの
Clickイベント.
void addTouchEventListener(const ccWidgetTouchCallback& callback); void addClickEventListener(const ccWidgetClickCallback& callback);

ここでのccWidgetTouchCallbackstd::function<void(Ref*,Widget::TouchEventType)>タイプです.Lambda式またはコールバック関数を設定できます.
//1.   btn->addTouchEventListener(CC_CALLBACK_2(MenuScene::menuCallback, this)); //2.  lambda []()->{} //    btn->addTouchEventListener([=](Ref* pSender,Widget::TouchEventType type){ //        log("%p->%d", pSender, type); //    });

コールバック関数のフォーマットは次のとおりです.
void MenuScene::menuCallback(Ref* pSender, Widget::TouchEventType type) {     Button *sender = (Button*)pSender;     log("%d", sender->getTag()); }

cococos 2 d-x 3.3 rc 0でテストした.
このドキュメントは長沙デイビッドキャンプ教育によって整理されています.