タッチイベントを利用しよう! (2/6)
作成:2015-06-13 10:45
更新:2015-06-13 10:45
更新:2015-06-13 10:45
■タッチした時の処理を実装する
では、処理の実装を行いましょう。下に、HelloworldScene.cppのソースコードを掲載しておきました。このように書き換え、ビルドして実行してみましょう。
画面の左下に「Hello World」と表示されているだけのシンプルなアプリです。画面の適当なところをクリックしてみましょう。「No, 1」というように表示が変わります。そのまま何度もクリックしていくと、No,2、No,3……という具合に数字が増えていきます。
ここでは、まずinitメソッド内でタッチイベントを許可しています。
そして、以下のメソッドでタッチ時の処理を実装しています。
cocos2d::Stringインスタンスを作り、appendWithFormatでテキストをつなげて、それをLabelのsetStringに設定する、という処理をしているだけです。テキスト関係の処理は前に説明しましたね。
このメソッドで注目すべきは、返値です。これはイベントの消費に関する設定を行うのに使われます。trueを返すと、そのままイベントは送られていき、その後のonTouchMovedやonTouchEndedといったイベントが発生します。falseを返すとイベントはこの時点で消費されてしまい、その後にあるonTouchMovedなどのイベントは発生しなくなります。
画面の左下に「Hello World」と表示されているだけのシンプルなアプリです。画面の適当なところをクリックしてみましょう。「No, 1」というように表示が変わります。そのまま何度もクリックしていくと、No,2、No,3……という具合に数字が増えていきます。
ここでは、まずinitメソッド内でタッチイベントを許可しています。
this->setTouchMode(kCCTouchesOneByOne);
this->setTouchEnabled(true);
そして、以下のメソッドでタッチ時の処理を実装しています。
bool HelloWorld::onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event)
{
auto str = String::create("No, ");
str.appendWithFormat("%i", count++);
label->setString(str.getCString());
return true;
}
cocos2d::Stringインスタンスを作り、appendWithFormatでテキストをつなげて、それをLabelのsetStringに設定する、という処理をしているだけです。テキスト関係の処理は前に説明しましたね。
このメソッドで注目すべきは、返値です。これはイベントの消費に関する設定を行うのに使われます。trueを返すと、そのままイベントは送られていき、その後のonTouchMovedやonTouchEndedといったイベントが発生します。falseを返すとイベントはこの時点で消費されてしまい、その後にあるonTouchMovedなどのイベントは発生しなくなります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
// ※HelloWorldScene.cpp #pragma execution_character_set("utf-8") #include "HelloWorldScene.h" USING_NS_CC; Scene* HelloWorld::createScene() { auto scene = Scene::create(); auto layer = HelloWorld::create(); scene->addChild(layer); return scene; } bool HelloWorld::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Director::getInstance()->setDisplayStats(false); // stats OFF count = 0; this->setTouchMode(kCCTouchesOneByOne); this->setTouchEnabled(true); label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 96); label->setPosition(Vec2(origin.x + 50, origin.y + 50)); label->setAnchorPoint(Vec2(0, 0)); this->addChild(label, 1); return true; } bool HelloWorld::onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event) { auto str = String::create("No, "); str.appendWithFormat("%i", count++); label->setString(str.getCString()); return true; }
※関連コンテンツ
「初心者のためのCocos2d-xゲームプログラミング入門」に戻る