关于3.3版本的触摸事件

以前使用了一段事件的2.X版本,后来去做AS开发了,水平还只是菜鸟。
说一下以前如果要使用CCLayer::registerWithTouchDispatcher();然后Director::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this,0);

我们先来看一下以前的setTouchEnabled的实现
void CCLayer::setTouchEnabled(bool enabled){ if (m_bIsTouchEnabled != enabled) { m_bIsTouchEnabled = enabled; if (m_bIsRunning) { if (enabled) { this->registerWithTouchDispatcher(); } else { // have problems? CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->removeDelegate(this); } } }}
再看一下现在setTouchEnabled的实现
void Layer::setTouchEnabled(bool enabled)
{
if (_touchEnabled != enabled)
{
_touchEnabled = enabled;
if (enabled)
{
if (_touchListener != nullptr)
return;

        if( _touchMode == Touch::DispatchMode::ALL_AT_ONCE )
        {
            // Register Touch Event
            auto listener = EventListenerTouchAllAtOnce::create();

            listener->onTouchesBegan = CC_CALLBACK_2(Layer::onTouchesBegan, this);
            listener->onTouchesMoved = CC_CALLBACK_2(Layer::onTouchesMoved, this);
            listener->onTouchesEnded = CC_CALLBACK_2(Layer::onTouchesEnded, this);
            listener->onTouchesCancelled = CC_CALLBACK_2(Layer::onTouchesCancelled, this);

            _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
            _touchListener = listener;
        }
        else
        {
            // Register Touch Event
            auto listener = EventListenerTouchOneByOne::create();
            listener->setSwallowTouches(_swallowsTouches);

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

            _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
            _touchListener = listener;
        }
    }
    else
    {
        _eventDispatcher->removeEventListener(_touchListener);
        _touchListener = nullptr;
    }
}

}

可以看到我们只需要设置_touchMode就可以了
两句话setTouchMode(Touch::DispatchMode::ONE_BY_ONE);
setTouchEnabled(true);