タッチの取得 - Cocos2d-x
cocos2d-xではシングルタッチ、マルチタッチを取得することができます。
それぞれの取得方法は下記の通りです。
シングルタッチの実装方法
HelloWorldScene.h
class HelloWorld : public cocos2d::CCLayer { 〜〜 省略 〜〜 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent); 〜〜 省略 〜〜 };
HelloWorldScene.cpp
bool HelloWorld::init() { 〜〜 省略 〜〜 // シングルタッチモードを設定する。 this->setTouchMode(kCCTouchesOneByOne); // タッチを有効にする。 this->setTouchEnabled(true); 〜〜 省略 〜〜 } bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { // タッチ開始処理を実装する。 return true; } void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) { // タッチ移動処理を実装する。 } void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { // タッチ終了処理を実装する。 } void HelloWorld::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent) { // タッチキャンセル処理を実装する。 }
マルチタッチの実装方法
HelloWorldScene.h
class HelloWorld : public cocos2d::CCLayer { 〜〜 省略 〜〜 virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent); virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent); virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent); virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent); 〜〜 省略 〜〜 };
HelloWorldScene.cpp
bool HelloWorld::init() { 〜〜 省略 〜〜 // マルチタッチモードを設定する。 this->setTouchMode(kCCTouchesAllAtOnce); // タッチを有効にする。 this->setTouchEnabled(true); 〜〜 省略 〜〜 } void HelloWorld::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) { // タッチ開始処理を実装する。 } void HelloWorld::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent) { // タッチ移動処理を実装する。 } void HelloWorld::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) { // タッチ終了処理を実装する。 } void HelloWorld::ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent) { // タッチキャンセル処理を実装する。 }
※注意
iOSアプリでマルチタッチを取得する場合、「AppController.mm」でEAGLViewのマルチタッチを有効にしなければいけません。
AppController.mm
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 〜〜 省略 〜〜 EAGLView *__glView; __glView.multipleTouchEnabled = true; 〜〜 省略 〜〜 }