Detect touch Cocos2d-x

c++, cocos2d-iphone, cocos2d-x, iphone, objective-c

Solution

You have to register with CCTouchDispatcher in order to receive touches:

Write this in your `init()` method in order to receive touches:

CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this, 0);

Also I recommend you to receive touch event via targeted touch delegate methods:

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);

In order these methods to be called you have to register with touch dispatcher a bit different:

CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);

EDIT

In new cocos version `CCTouchDispatcher` is located in `CCDirector`:

It should look something like this:

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);

Problem

I'm using Cocos2d-x and trying to detect touches in my HelloWorld project. Though I'm having no luck. .h ``` class HelloWorld : public CCLayer{ private: CCSpriteBatchNode * _batchNode; CCSprite *_turkey; virtual void ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::CCEvent* event); ``` .ccp ``` void HelloWorld::ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::CCEvent* event){ CCLog("this"); } ``` but the thing is that when I click the screen 'this' never shows up in the log. What am i missing here? thanks! Edit, Im using this tutorial. http://www.raywenderlich.com/11338/cocos2d-x-for-ios-and-android-space-game

Original source