質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2733閲覧

ListViewの中でどのボタンが押されたか取得したい

you02

総合スコア7

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/05/23 07:25

###前提・実現したいこと
cocos2d-x を始めて1ヶ月の初心者です。
開発言語は C++ です。

実現したいことは、ListViewの中に動的にボタン要素を入れて、
どのボタンが押されたか取得できるようにしたいです。

###該当のソースコード

Node* node = CSLoader::createNode("res/ListNode.csb"); node->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2)); ui::ListView* listView = static_cast<ui::ListView*>(node->getChildByName("ListView_1")); for (int i= 0; i<10; i++) { auto text = StringUtils::format("アイテム %d",i); Node* node_panel = CSLoader::createNode("res/ListParts.csb"); ui::Layout* panel_layout = static_cast<ui::Layout*>(node_panel->getChildByName("Panel_1")); node_panel->removeChild(panel_layout, true); //nodeの参照を無しにする //ラベル要素の取得 auto label = panel_layout->getChildByName<ui::Text*>("Text_1"); label->setString(text); //ボタン要素の取得 auto button = panel_layout->getChildByName<ui::Button*>("Button_1"); button->loadTextureNormal("button1.png"); button->addClickEventListener(CC_CALLBACK_2(TestScene::buttonClick, this)); listView->addChild(panel_layout); } this->addChild(node); //ボタンが押された時のコールバック void TestScene::buttonClick(Ref* sender, int tag){ switch(tag){ } }

###試したこと

button->addClickEventListener(CC_CALLBACK_2(TestScene::buttonClick, this));

CC_CALLBACK_2にして、引数にintのtagを渡したいのですが、
エラーになってしまいどのように実装すればいいのかわかりません。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じでどうでしょうか?

cpp

1 for (int i= 0; i<10; i++) 2 { 3 .... 4 5 //ボタン要素の取得 6 auto button = panel_layout->getChildByName<ui::Button*>("Button_1"); 7 button->loadTextureNormal("button1.png"); 8 9 button->addClickEventListener([this](Ref* sender) { 10 auto btn = dynamic_cast<ui::Button*>(sender); 11 buttonClick(sender, btn->getTag()); 12 }); 13 14 ... 15 }

投稿2016/05/26 14:33

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

you02

2016/05/27 02:18

ありがとうございます!できました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問