Exemple #1
0
void CCLayer::setModal(bool flag, bool recursive /*= true*/)
{
	CCTouchDispatcher* td = CCTouchDispatcher::sharedDispatcher();

	td->Channel()->send(EVT::CC_TOUCH_MODAL, new CCTouchModalEvent(this, flag));

	if (flag)
		td->AddModal(this);
	else
		td->RemoveModal(this);

	if (!recursive) return;

	if (m_pChildren)
	{
		CCObject* child;
		CCARRAY_FOREACH(m_pChildren, child)
		{
			if (dynamic_cast<CCLayer*>(child))
			{
				static_cast<CCLayer*>(child)->setModal(flag, recursive);
			}
			else
			{
				CCTouchDelegate* delegate = dynamic_cast<CCTouchDelegate*>(child);
				if (delegate)
				{
					if (flag)
						td->AddModal(delegate);
					else
						td->RemoveModal(delegate);
				}
			}
		}
	}
}