Esempio n. 1
0
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;
    
}