P53:
removeChildByTag - 如果存在相同标志值的话,将会清空所有的子节点。
但事实上,根据代码:base_nodes/CCNode.cpp, 应该只会remove第一个找到的。
void CCNode::removeChildByTag(int tag, bool cleanup)
{
CCAssert( tag != kCCNodeTagInvalid, "Invalid tag");
CCNode *child = this->getChildByTag(tag);
if (child == NULL)
{
CCLOG("cocos2d: removeChildByTag(tag = %d): child not found!", tag);
}
else
{
this->removeChild(child, cleanup);
}
}
勘误
|
P53:
在代码的最后,移除了两次,这只是为了演示不同的移除方法,其实是会出错的
但事实上,根据代码:base_nodes/CCNode.cpp, 第二次移除是个no op:
/* "remove" logic MUST only be on this method
* If a class want's to extend the 'removeChild' behavior it only needs
* to override this method
*/
void CCNode::removeChild(CCNode* child, bool cleanup)
{
// explicit nil handling
if (m_pChildren == NULL)
{
return;
}
if ( m_pChildren->containsObject(child) )
{
this->detachChild(child,cleanup);
}
}
P61
CCDirector中采用队列的方式管理场景,队列的特点是先进后出
是使用栈(stack),栈的特点是先进后出 (这本书有人review过吗?):
void CCDirector::pushScene(CCScene *pScene)
{
CCAssert(pScene, "the scene should not null");
m_bSendCleanupToScene = false;
m_pobScenesStack->addObject(pScene);
m_pNextScene = pScene;
}
源码里也都说stack了(m_pobScenesStack)
p77
Zwpotex
typo, 应该是Zwoptex
哥们谢谢的勘误~这书正在重印,我也查出了一些错误。这些将会在重印的书里,一起修正的。
> 我来回应