我正在使用 Cocos2d-x 并尝试在我的 HelloWorld 项目中检测触摸。虽然我运气不好。
.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");
}
但问题是,当我点击屏幕时,“this”从未出现在日志中。我在这里缺少什么?
谢谢!
编辑,
我正在使用本教程。 http://www.raywenderlich.com/11338/cocos2d-x-for-ios-and-android-space-game
最佳答案
您必须注册 CCTouchDispatcher 才能接收触摸:
在您的 init()
方法中写入此内容以接收触摸:
CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this, 0);
我还建议您通过有针对性的触摸委托(delegate)方法接收触摸事件:
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);
为了调用这些方法,你必须注册 touch dispatcher 有点不同:
CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);
编辑
在新的cocos版本中CCTouchDispatcher
位于CCDirector
:
它应该看起来像这样:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
关于iphone - 检测触摸 Cocos2d-x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141112/