alignItemsHorizontallyWithPadding是设置当前菜单中所有元素的坐标,是这些元素间隔相等的距离,具体间隔的距离就是玩家传入的参数。
void CCMenu::alignItemsHorizontallyWithPadding(float padding)
{
float width = -padding;
if (m_pChildren && m_pChildren->count() > 0)
{
CCObject* pObject = NULL;
CCARRAY_FOREACH(m_pChildren, pObject)
{
CCNode* pChild = dynamic_cast<CCNode*>(pObject);
if (pChild)
{
width += pChild->getContentSize().width * pChild->getScaleX() + padding;
}
}
}
//上面这部分代码算出所有元素包括间隔所占的总宽度。初始width = -padding加上最后一个元素width所加的padding正好可以把两边的减去。
float x = -width / 2.0f;
if (m_pChildren && m_pChildren->count() > 0)
{
CCObject* pObject = NULL;
CCARRAY_FOREACH(m_pChildren, pObject)
{
CCNode* pChild = dynamic_cast<CCNode*>(pObject);
if (pChild)
{
pChild->setPosition(ccp(x + pChild->getContentSize().width * pChild->getScaleX() / 2.0f, 0));
x += pChild->getContentSize().width * pChild->getScaleX() + padding;
}
}
}
//上面是设置所有元素的坐标。这里初始 float x = -width / 2.0f,是因为CCMenu的起始坐标点在中心吗?不懂~~~
}