UILayout* UICreator::CreateUILayoutFromFile(const char* file, cocos2d::CCNode *pParent, bool bShow ) { // Load plist layout file UILayout* pLayer = NULL; NiStream * pkStream = new NiStream(); pLayer = (UILayout*)(pkStream->CreateControlFromFile(file, pParent)); delete pkStream; if(NULL == pLayer) { return NULL; } // update containers reference object std::list<UIControlBase*> childContainers = pLayer->getAllChildEndsWithName("Container"); for(std::list<UIControlBase*>::iterator it = childContainers.begin(); it != childContainers.end(); it++) { if(dynamic_cast<UIContainer*>(*it) != NULL) { UIContainer *tmp = static_cast<UIContainer*>(*it); if(tmp->getRefMode() == OBJECT_REFERENCE) { std::string refObjName = tmp->getRefObjName(); UIControlBase *refObj = pLayer->FindChildObjectByName(refObjName); if(refObj != NULL && dynamic_cast<UIContainer*>(refObj) != NULL) { tmp->setRefObj(static_cast<UIContainer*>(refObj)); } } } } // update scroll pages std::list<UIControlBase*> childScrollPages = pLayer->getAllChildEndsWithName("ScrollPage"); for(std::list<UIControlBase*>::iterator it = childScrollPages.begin(); it != childScrollPages.end(); it++) { if(dynamic_cast<UIScrollPage*>(*it) != NULL) { UIScrollPage *tmp = static_cast<UIScrollPage*>(*it); tmp->addPagesByChildren(); } } float scaleFactor = UIManager::sharedManager()->getScaleFactor(); //float scaleFactorX = UIManager::sharedManager()->getScaleFactorX(); //float scaleFactorY = UIManager::sharedManager()->getScaleFactorY(); pLayer->setScale(scaleFactor); //pLayer->setScale(scaleFactorX, scaleFactorY); return pLayer; }