gpt4 book ai didi

iphone - 检测触摸 Cocos2d-x

转载 作者:可可西里 更新时间:2023-11-01 18:42:40 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com