我在看了Cocos2d-x权威指南这本书第138对CCMenu的修改。改完后,在windows下跑没问题,移植到android下运行直接退出,把CCMenu改的地方还原又正常了。我看看代码也没觉得有问题,百思不得其解,求高人指点。贴下代码:
CCMenuItem* CCMenu::itemForTouch(CCTouch touch)
{
CCPoint touchLocation = touch->getLocation();
if (m_pChildren && m_pChildren->count() > 0)
{
CCObject pObject = NULL;
CCARRAY_FOREACH(m_pChildren, pObject)
//for (unsigned int i = m_pChildren->count() - 1; i >= 0; i–) //改成逆序的话,在windows下正常,android下出错
{
CCMenuItem* pChild = dynamic_cast<CCMenuItem*>(pObject);
//CCMenuItem* pChild = dynamic_cast<CCMenuItem*>(m_pChildren->objectAtIndex(i)); //改成逆序的话,在windows下正常,android下出错
if (pChild && pChild->isVisible() && pChild->isEnabled())
{
CCPoint local = pChild->convertToNodeSpace(touchLocation);
CCRect r = pChild->rect();
r.origin = CCPointZero;
if (r.containsPoint(local))
{
return pChild;
}
}
}
}
return NULL;
}
改成CCARRAY_FOREACH_REVERSE就不出错了,真是奇怪了。