iphone - 检测触摸 Cocos2d-x

标签 iphone c++ objective-c cocos2d-iphone cocos2d-x

我正在使用 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/

相关文章:

iphone - 为什么 Youtube 视频没有填满 UiWebView?

iPhone核心数据: Property Persistance During Undo

iphone - UILabel:仅对文本的一部分应用换行模式

c++ - 如果没有另外说明,是否可以假定 get 方法是线程安全的?

objective-c - 输出设备的类型(耳机等)

iphone - Facebook Connect SSO 不适用于某些 iPhone

c++ - 从源代码 : links to shared libraries failed 构建 R

c++ - 使用 stdio 和 C++/Python 处理 EOF 问题

iOS 如何检查 valueForKey 是否存在?

ios - CustomIOS7AlertView横向模式