Example #1
0
    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;
    }