LoginSignup
1
1

More than 5 years have passed since last update.

cocos2dx v2.2.6 において、UI Editor で作ったUIを動かすコード

Last updated at Posted at 2015-05-18

cocos2dxにおいて、やはり作るゲームはリッチな画面にしたいものです。
で、手付けで画像やスプライトを配置したり、アニメーションさせようとするとそれはもう莫大な時間がかかる。

そこで、CocoStudioのAnimation editor や UI Editor を使って、
すばやくリッチな画面を作ろうということになるわけですが、cocos2dxのコードは名前が変わったり、
関数が廃止になったり、ソースファイルがもうなくてウェブのサンプルが動かなかったみたいなことがあります。

で、今回はcocos2dxのv2系の最後である(だろう)2.2.6でのUI Editorでエクスポートしたデータを
動かすコードです。

まずは最低限、表示、アニメーション、ボタンの動作を実現します。

ウェブにもいろいろコードがありましたが、v3系だったり、v2.2系で名前が変わってたりすでに関数がなかったりしました。
UILayer関数は2.2.6ではもう存在しません。

ですので、おそらく2.2.6でのコードは日本語ではレアじゃないかと思います(2015/05/19現在)。

まずはヘッダで、

using namespace cocos2d::extension;
using namespace cocos2d::ui;

としてください。
これがないとエラーがバリバリ出ます。

まずはUIの表示です。
Jsonファイルを指定するときにはResourceフォルダのフルパス指定します。

    gui::TouchGroup* ul = gui::TouchGroup::create();
    ul->addWidget(GUIReader::shareReader()->widgetFromJsonFile("CollectionView/CollectionView_1.json"));
    this->addChild(ul);

次にアニメーションの開始です。
UIのアニメーションは、作ったアニメごとに動作を制御します。

Jsonファイルの指定は、Resourceフォルダのフルパスではないことに注意。
フォルダ名を入れると動かないしエラーも出しません。
ここでハマりました。

「Animation0」は、UI Editorでつけたアニメの名前です。

    ActionManager::shareManager()->playActionByName("CollectionView_1.json","Animation0");

最後にボタンの飛び先の指定です。
「Button_1」はUI Editorでつけたボタンの名前です。
toucheventselector はnamaespace cocos2d::ui してないと使えないのでハマります。

    UIButton *pButton = (UIButton*)ul->getWidgetByName("Button_1");
    pButton->addTouchEventListener(this, toucheventselector(CollectionScene::buttonCallback));

以上でした。
参考まで。
Good luck!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1