1

在新的 cocos2d-x 3.0rc 中,我想检测图层中的触摸。如下所述,我在课堂上有过度使用的功能。

virtual bool onTouchBegan(CCTouch* touch, CCEvent* event);
virtual void onTouchMoved(CCTouch* touch, CCEvent* event);
virtual void onTouchEnded(CCTouch* touch, CCEvent* event);

但未检测到触摸。知道这发生了吗?

4

3 回答 3

3

为了启用触摸,我使用了下面的代码。在 cocos2d-x 3.0 RC1 中完美运行

void class_name::onEnter()
{
    Layer::onEnter();

    // Register Touch Event
    auto dispatcher = Director::getInstance()->getEventDispatcher();
    auto listener = EventListenerTouchOneByOne::create();

    listener->onTouchBegan = CC_CALLBACK_2(class_name::onTouchBegan, this);
    listener->onTouchMoved = CC_CALLBACK_2(class_name::onTouchMoved, this);
    listener->onTouchEnded = CC_CALLBACK_2(class_name::onTouchEnded, this);

    dispatcher->addEventListenerWithSceneGraphPriority(listener, this);
}
于 2014-04-14T01:39:05.813 回答
1

在 Cocos2d-x 3.0 中检测触摸

在(HelloWorld.h)中编写代码{

cocos2d::EventListenerTouchAllAtOnce *Listner;
void onTouchesBegan(const std::vector<cocos2d::Touch *> &touches, cocos2d::Event *event);
    void onTouchesMoved(const std::vector<cocos2d::Touch *> &touches, cocos2d::Event *event);
    void onTouchesEnded(const std::vector<cocos2d::Touch *> &touches, cocos2d::Event *event);

}

在 init Method(HelloWorld.cpp) 中编写代码 {

 Listner = EventListenerTouchAllAtOnce::create();
    Listner->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
    Listner->onTouchesMoved = CC_CALLBACK_2(HelloWorld::onTouchesMoved, this);
    Listner->onTouchesEnded = CC_CALLBACK_2(HelloWorld::onTouchesEnded, this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(Listner, this);

}

于 2015-07-08T05:04:01.267 回答
-1
enable touch on init() Or onEnter()

this->setTouchEnabled(true);
CCDirector::sharedDirector() -> getTouchDispatcher() -> addTargetedDelegate( this, 0, true );
于 2014-04-02T10:37:58.097 回答