今回は画面をタッチした時の処理の仕方を紹介したいと思います。例えばある場所をタッチした、画面を何秒間かタッチしたなども検知することをできます。
まずはタッチ処理を受け付けるために以下のコードをHelloWorld.cppのinit関数内に記述します。
//タッチ処理を受け付ける auto listener = EventListenerTouchOneByOne::create(); //画面がタッチされた時に呼び出す関数を指定 listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this); //画面から指が離れた時に呼び出される関数を指定 listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this); //タッチしながら移動している時に呼び出される関数を指定 listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,this); //イベント登録 auto dispatcher = Director::getInstance()->getEventDispatcher(); dispatcher->addEventListenerWithSceneGraphPriority(listener, this);
bool onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event); void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event); void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);
//タッチした時に呼び出される関数 bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event){ return true; } //タッチを離した時に呼び出される関数 void HelloWorld::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event){ } //タッチしながら移動中に呼び出される関数 void HelloWorld::onTouchMoved(cocos2d::Touch* touch,cocos2d::Event* event) { }
bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event){ //位置を取得 auto pos=touch->getLocation(); //座標を表示 CCLOG("x=%.f , y=%.f",pos.x,pos.y); return true; }