#include "UISliderLoader.h" #include "REDSelectorResolver.h" using namespace std; using namespace cocos2d; using namespace cocos2d::ui; namespace redream { #define PROPERTY_BAR "bar" #define PROPERTY_BALL "ball" #define PROPERTY_PERCENT "percent" #define PROPERTY_VALUEEVENT "valueEvent" void SliderLoader::onHandlePropTypeFrameSet(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, std::vector pFrameSet, REDReader * ccbReader) { if (strcmp(pPropertyName, PROPERTY_BAR) == 0) { ((Slider *)pNode)->loadBarTexture(pFrameSet.at(0).path, pFrameSet.at(0).texType); ((Slider *)pNode)->loadProgressBarTexture(pFrameSet.at(1).path, pFrameSet.at(1).texType); } else if (strcmp(pPropertyName, PROPERTY_BALL) == 0) { ((Slider *)pNode)->loadSlidBallTextureNormal(pFrameSet.at(0).path, pFrameSet.at(0).texType); ((Slider *)pNode)->loadSlidBallTexturePressed(pFrameSet.at(0).path, pFrameSet.at(0).texType); ((Slider *)pNode)->loadSlidBallTextureDisabled(pFrameSet.at(0).path, pFrameSet.at(0).texType); } else { WidgetLoader::onHandlePropTypeFrameSet(pNode, pParent, pPropertyName, pFrameSet, ccbReader); } } void SliderLoader::onHandlePropTypePercent(cocos2d::Node * pNode, cocos2d::Node * pParent, const char * pPropertyName, int pValue, REDReader * ccbReader) { if (strcmp(pPropertyName, PROPERTY_PERCENT) == 0) { ((Slider *)pNode)->setPercent(pValue); } else { WidgetLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pValue, ccbReader); } } void SliderLoader::onHandlePropTypeCallbacks(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, CallbacksData * pCallbacksData, REDReader * ccbReader) { cocos2d::ui::Slider::ccSliderCallback event = 0; if (pCallbacksData != nullptr) { cocos2d::Ref * target = pCallbacksData->_target; std::string selectorName = pCallbacksData->selectorName; REDSelectorResolver * targetAsREDSelectorResolver = dynamic_cast(target); if(targetAsREDSelectorResolver != nullptr) { auto handler = targetAsREDSelectorResolver->onResolveREDUISliderSelector(target, selectorName.c_str()); if (handler != 0) { event = std::function(std::bind(handler, target, std::placeholders::_1, std::placeholders::_2)); } } if(event == 0) { REDSelectorResolver * ccbSelectorResolver = ccbReader->getREDSelectorResolver(); if(ccbSelectorResolver != nullptr) { auto handler = ccbSelectorResolver->onResolveREDUISliderSelector(target, selectorName.c_str()); if (handler != 0) { event = std::function(std::bind(handler, target, std::placeholders::_1, std::placeholders::_2)); } } } } else { return; } if (strcmp(pPropertyName, PROPERTY_VALUEEVENT) == 0) { ((Slider *)pNode)->addEventListener(event); } else { WidgetLoader::onHandlePropTypeCallbacks(pNode, pParent, pPropertyName, pCallbacksData, ccbReader); } } }