Cocos2d-x の extensions でツマミ(ダイヤル)を使ってみた

初心者なもんで、作るものはできるなら一画面中に納めたい派のワタクシ。
いつものことですが、作っているうちに、「どうせならこんな機能も付けようか・・・」と、仕様ってなんなの? おいしいの? 状態に。
機能を付け足すということは、やはり UI が必要になり画面がキツキツ。
と、ネット検索してみたら、potentiometer というツマミを回すと値が変わるという GUI が用意されているとのこと。
「おお、省面積化できるかもー」と喜んだまでは良いのですが、本家の Reference を読んでもチンプンカンプンな初心者なワタクシ、ちゃんと動くようになるまで、結構、苦労しちゃったので、備忘録。

やりたいこととしては、画面上にダイヤル(potentiometer)を配置して、ぐりぐりツマミを回して値が変わったら、その値を変数に入れる、てな感じ。


jni/Android.mk に以下を記述

LOCAL_STATIC_LIBRARIES += cocos_extension_static

$(call import-module, extensions)




.h ファイル(HelloWorldScene.hとか)に、以下を記述。

#include "extensions/cocos-ext.h"
//potentiometer が使えるようになりますように、のおまじない

cocos2d::extension::ControlPotentiometer* pMeter;
//作った potentiometer を突っ込むやーつ

void potentioMeterValueChange(cocos2d::Ref* pSender, cocos2d::extension::Control::EventType event);
//ツマミを回したときに呼び出される関数




.cpp ファイル(HelloWorldScene.cppとか)の init() の中に以下を記述。

pMeter = ControlPotentiometer::create("バックグラウンド.png", "メーター.png", "ツマミ.png");
//順番に「ダイヤルの背景」「ツマミを回したときに変化するメーター」「ツマミ」の画像を指定するだけ

pMeter->setPosition(Vec2(x, y));
//potentiometer を配置したい座標を指定

pMeter->setMaxmumValue(10);
pMeter->setMinimumValue(0);
//ツマミの回したときの最大値と最小値を設定

pMeter->setValue(5);
//ツマミの初期値と位置を指定

pMeter->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorldScene::function), Control::EventType::VALUE_CHANGE);
//Control::EventType::~のイベントが発生したときに、cccontrol_selector(~)で指定した関数が呼び出される
//ちなみに EventType には、TOUCH_DOWN、DRAG_INSIDE、DRAG_OUTSIDE、DRAG_ENTER、DRAG_EXIT、TOUCH_UP_INSIDE、TOUCH_UP_OUTSIDE、TOUCH_CANCEL、VALUE_CHANGED があるもよう


そして、init() の外に

void function(Ref* pSender, Cotrol::EventType event){
    log("pMeter changed value");
//   とか 必要な処理
}



Cocos2d-x には、その他にも便利な GUI が用意されている とのことです。
まぁ、Cocos2d-x を、その名の通りゲーム・エンジンとして使用している方はあまり関係ないのかも知れませんケド。

スポンサーサイト

コメント

非公開コメント