Ejemplo n.º 1
0
 void ScrollViewReader::setPropsWithFlatBuffers(cocos2d::Node *node, const flatbuffers::Table *scrollViewOptions)
 {
     ScrollView* scrollView = static_cast<ScrollView*>(node);
     auto options = (ScrollViewOptions*)scrollViewOptions;
     
     bool clipEnabled = options->clipEnabled() != 0;
     scrollView->setClippingEnabled(clipEnabled);
     
     bool backGroundScale9Enabled = options->backGroundScale9Enabled() != 0;
     scrollView->setBackGroundImageScale9Enabled(backGroundScale9Enabled);
     
     
     auto f_bgColor = options->bgColor();
     Color3B bgColor(f_bgColor->r(), f_bgColor->g(), f_bgColor->b());
     auto f_bgStartColor = options->bgStartColor();
     Color3B bgStartColor(f_bgStartColor->r(), f_bgStartColor->g(), f_bgStartColor->b());
     auto f_bgEndColor = options->bgEndColor();
     Color3B bgEndColor(f_bgEndColor->r(), f_bgEndColor->g(), f_bgEndColor->b());
     
     auto f_colorVecor = options->colorVector();
     Vec2 colorVector(f_colorVecor->vectorX(), f_colorVecor->vectorY());
     scrollView->setBackGroundColorVector(colorVector);
     
     int bgColorOpacity = options->bgColorOpacity();
     
     int colorType = options->colorType();
     scrollView->setBackGroundColorType(Layout::BackGroundColorType(colorType));
     
     scrollView->setBackGroundColor(bgStartColor, bgEndColor);
     scrollView->setBackGroundColor(bgColor);
     scrollView->setBackGroundColorOpacity(bgColorOpacity);
     
     
     bool fileExist = false;
     std::string errorFilePath = "";
     auto imageFileNameDic = options->backGroundImageData();
     int imageFileNameType = imageFileNameDic->resourceType();
     std::string imageFileName = imageFileNameDic->path()->c_str();
     if (imageFileName != "")
     {
         switch (imageFileNameType)
         {
             case 0:
             {
                 if (FileUtils::getInstance()->isFileExist(imageFileName))
                 {
                     fileExist = true;
                 }
                 else
                 {
                     errorFilePath = imageFileName;
                     fileExist = false;
                 }
                 break;
             }
                 
             case 1:
             {
                 std::string plist = imageFileNameDic->plistFile()->c_str();
                 SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(imageFileName);
                 if (spriteFrame)
                 {
                     fileExist = true;
                 }
                 else
                 {
                     if (FileUtils::getInstance()->isFileExist(plist))
                     {
                         ValueMap value = FileUtils::getInstance()->getValueMapFromFile(plist);
                         ValueMap metadata = value["metadata"].asValueMap();
                         std::string textureFileName = metadata["textureFileName"].asString();
                         if (!FileUtils::getInstance()->isFileExist(textureFileName))
                         {
                             errorFilePath = textureFileName;
                         }
                     }
                     else
                     {
                         errorFilePath = plist;
                     }
                     fileExist = false;
                 }
                 break;
             }
                 
             default:
                 break;
         }
         if (fileExist)
         {
             scrollView->setBackGroundImage(imageFileName, (Widget::TextureResType)imageFileNameType);
         }
         //else
         //{
         //    auto label = Label::create();
         //    label->setString(__String::createWithFormat("%s missed", errorFilePath.c_str())->getCString());
         //    scrollView->addChild(label);
         //}
     }
     
     auto widgetOptions = options->widgetOptions();
     auto f_color = widgetOptions->color();
     Color3B color(f_color->r(), f_color->g(), f_color->b());
     scrollView->setColor(color);
     
     int opacity = widgetOptions->alpha();
     scrollView->setOpacity(opacity);
     
     auto f_innerSize = options->innerSize();
     Size innerSize(f_innerSize->width(), f_innerSize->height());
     scrollView->setInnerContainerSize(innerSize);
     int direction = options->direction();
     scrollView->setDirection((ScrollView::Direction)direction);
     bool bounceEnabled = options->bounceEnabled() != 0;
     scrollView->setBounceEnabled(bounceEnabled);
     
     
     auto widgetReader = WidgetReader::getInstance();
     widgetReader->setPropsWithFlatBuffers(node, (Table*)options->widgetOptions());
     
     if (backGroundScale9Enabled)
     {
         auto f_capInsets = options->capInsets();
         Rect capInsets(f_capInsets->x(), f_capInsets->y(), f_capInsets->width(), f_capInsets->height());
         scrollView->setBackGroundImageCapInsets(capInsets);
         
         auto f_scale9Size = options->scale9Size();
         Size scale9Size(f_scale9Size->width(), f_scale9Size->height());
         scrollView->setContentSize(scale9Size);
     }
     else
     {
         if (!scrollView->isIgnoreContentAdaptWithSize())
         {
             Size contentSize(widgetOptions->size()->width(), widgetOptions->size()->height());
             scrollView->setContentSize(contentSize);
         }
     }
     
 }