bool BaseLayer::initTileMap(int ID)//初始化地图 { bool bRet = false; do { m_tileParallaxNode = TileParallaxNode::createWithID(ID); CCAssert(m_tileParallaxNode != NULL, "TileParallaxNode cannot be NULL"); CC_BREAK_IF(!m_tileParallaxNode); m_tileParallaxNode->retain(); addChild(m_tileParallaxNode, 0, -6); TMXTiledMap* pTileMap = m_tileParallaxNode->getTileMap(); TMXLayer *tmxLayer; tmxLayer = pTileMap->getLayer("ObjectsFar"); CCAssert(tmxLayer != NULL, "ObjectsFar layer not found!"); tmxLayer->retain(); tmxLayer->removeFromParentAndCleanup(false); m_objectsFar->addChild(tmxLayer, 0, OBJECT_FAR_TAG); addChild(m_objectsFar); tmxLayer->release(); tmxLayer = pTileMap->getLayer("ObjectsMiddle"); CCAssert(tmxLayer != NULL, "ObjectsMiddle layer not found!"); tmxLayer->retain(); tmxLayer->removeFromParentAndCleanup(false); m_objectsMiddle->addChild(tmxLayer); tmxLayer->setTag(OBJECT_MIDDLE_TAG); addChild(m_objectsMiddle, CaculateObjectMiddleOrder(),OBJECT_MIDDLE_TAG); //reorderTMXLayer(tmxLayer);//这样渲染批次有点高 tmxLayer->release(); tmxLayer = pTileMap->getLayer("ObjectsNear"); CCAssert(tmxLayer != NULL, "ObjectsNear layer not found!"); tmxLayer->retain(); tmxLayer->removeFromParentAndCleanup(false); m_objectsNear->addChild(tmxLayer,0,OBJECT_NEAR_TAG); addChild(m_objectsNear); tmxLayer->release(); reorderChild(m_objectsFar, 0);//reorder the layer reorderChild(m_objectsNear, DataManager::getInstance()->getMaxZorder() + 1); bRet = true; } while (0); return bRet; }