博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx 点击事件分析(4)
阅读量:4217 次
发布时间:2019-05-26

本文共 2976 字,大约阅读时间需要 9 分钟。

1、添加单点触摸事件,单点触摸事件有优先级,bSwallowsTouches是否吞噬,高优先级的会优先响应,而且可以吞噬事件,不让触摸事件往低优先级传递。void CCTouchDispatcher::addTargetedDelegate(CCTouchDelegate *pDelegate, int nPriority, bool bSwallowsTouches){        CCTouchHandler *pHandler = CCTargetedTouchHandler::handlerWithDelegate(pDelegate, nPriority, bSwallowsTouches);    if (! m_bLocked)    {        forceAddHandler(pHandler, m_pTargetedHandlers);    }    else    {        /* If pHandler is contained in m_pHandlersToRemove, if so remove it from m_pHandlersToRemove and return.         * Refer issue #752(cocos2d-x)         */        if (ccCArrayContainsValue(m_pHandlersToRemove, pDelegate))        {            ccCArrayRemoveValue(m_pHandlersToRemove, pDelegate);            return;        }        //CCArray* m_pHandlersToAdd这个可以理解为一个临时保存CCTouchHandler的地方,	//m_bLocked 如果这个值为true,这把CCTouchHandler先加入到m_pHandlersToAdd,	//然后在合适的时间,即CCTouchDispatcher::touches函数中,再把m_pHandlersToAdd数组里面	//CCTouchHandler加入到m_pTargetedHandlers或者m_pStandardHandlers中。        m_pHandlersToAdd->addObject(pHandler);        m_bToAdd = true;    }}-->>//// handlers management根据优先级进行排序,然后添加到单点触摸事件列表中,由此可知,//值越小,优先级越高//void CCTouchDispatcher::forceAddHandler(CCTouchHandler *pHandler, CCArray *pArray){    unsigned int u = 0;    CCObject* pObj = NULL;    CCARRAY_FOREACH(pArray, pObj)     {         CCTouchHandler *h = (CCTouchHandler *)pObj;         if (h)         {             if (h->getPriority() < pHandler->getPriority())             {                 ++u;             }              if (h->getDelegate() == pHandler->getDelegate())             {                 CCAssert(0, "");                 return;             }         }     }    pArray->insertObject(pHandler, u);}2、移除:和加入类似void CCTouchDispatcher::removeDelegate(CCTouchDelegate *pDelegate){    if (pDelegate == NULL)    {        return;    }    if (! m_bLocked)    {        forceRemoveDelegate(pDelegate);    }    else    {        /* If pHandler is contained in m_pHandlersToAdd, if so remove it from m_pHandlersToAdd and return.         * Refer issue #752(cocos2d-x)         */        CCTouchHandler *pHandler = findHandler(m_pHandlersToAdd, pDelegate);        if (pHandler)        {            m_pHandlersToAdd->removeObject(pHandler);            return;        }        ccCArrayAppendValue(m_pHandlersToRemove, pDelegate);        m_bToRemove = true;    }}-->>void CCTouchDispatcher::removeDelegate(CCTouchDelegate *pDelegate){    if (pDelegate == NULL)    {        return;    }    if (! m_bLocked)    {        forceRemoveDelegate(pDelegate);    }    else    {        /* If pHandler is contained in m_pHandlersToAdd, if so remove it from m_pHandlersToAdd and return.         * Refer issue #752(cocos2d-x)         */        CCTouchHandler *pHandler = findHandler(m_pHandlersToAdd, pDelegate);        if (pHandler)        {            m_pHandlersToAdd->removeObject(pHandler);            return;        }        ccCArrayAppendValue(m_pHandlersToRemove, pDelegate);        m_bToRemove = true;    }}

转载地址:http://zxsmi.baihongyu.com/

你可能感兴趣的文章
激活函数之ReLU函数
查看>>
经典排序算法详解
查看>>
概述类加载器及类加载过程
查看>>
MySQL SQL优化总结
查看>>
MySQL MyISAM引擎的读锁与写锁
查看>>
面向对象与面向过程的本质的区别
查看>>
Java语言有哪些特点?
查看>>
idea创建maven项目并关联gitee
查看>>
HashMap和Hashtable的区别
查看>>
JVM 对 Java 的原生锁做了哪些优化?
查看>>
JAVA实现简单的阻塞队列
查看>>
我的2020
查看>>
idea快捷键使用
查看>>
2.1MAC协议概述
查看>>
2.3 WSN的MAC协议
查看>>
图解后缀表达式的计算过程
查看>>
栈与队列的应用——计算表达式的值
查看>>
静态链表——sharing
查看>>
静态链表——sorting
查看>>
DFS——背包问题
查看>>