タッチの取得 - 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;
  〜〜 省略 〜〜
}