cocos2d-iphone - cocos2d子类化 Sprite 来处理触摸?

标签 cocos2d-iphone touch sprite layer cocos2d-x

我是 cocos2d(-x) 世界的新手。

我想检测对 sprite 的触摸,教程/示例似乎建议使用层来检测触摸并找到带有边界框的适当 sprite。

子类化 sprite 以允许触摸检测通常不是一个好主意吗?

最佳答案

注意:此答案可能已过时。我在 2012 年回答了这个问题。

这不是一个坏主意。这是我的做法:

头文件:

#include "cocos2d.h"
using namespace cocos2d;
class TouchableSprite : public cocos2d::CCSprite, public CCTargetedTouchDelegate {
    public:
    virtual void onEnter();
    virtual void onExit();
    virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);
    virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);
    virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);
};

cpp文件:

#include "TouchableSprite.h"
void TouchableSprite::onEnter(){
    // before 2.0:
    // CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);

    // since 2.0: 
    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
    CCSprite::onEnter();
}
void TouchableSprite::onExit(){
    // before 2.0:
    // CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);

    // since 2.0:
    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
    CCSprite::onExit();
}
bool TouchableSprite::ccTouchBegan(CCTouch* touch, CCEvent* event){
    //do whatever you want here
    return true;
}
void TouchableSprite::ccTouchMoved(CCTouch* touch, CCEvent* event){
    //do what you want
}
void TouchableSprite::ccTouchEnded(CCTouch* touch, CCEvent* event){
    //do your job here
}

关于cocos2d-iphone - cocos2d子类化 Sprite 来处理触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354689/

相关文章:

ios - 如何通过 iTunes 链接或 Google 搜索使 UIImageView 可点击(可触摸)

iOS Swift SpriteKit实现 Sprite "explosion"效果

ios - 如何在 iOS/OpenGL ES 2.0 中批处理 Sprite

swift - 如何在 spritekit 中通过触摸将 Sprite 相对于其原始位置移动

objective-c - 实现类似场景的最有效方法

iphone - 实时调整粒子文件(.plist)

iphone - iAd 出现和消失

iphone - FPS在iPhone 4和3GS上下降

android - 平滑平移问题——每秒触摸次数少

swift - 在touchesMoved函数中移动2个不同的Spritenode