1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #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<FramePath> 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<REDSelectorResolver *>(target);
-
- if(targetAsREDSelectorResolver != nullptr)
- {
- auto handler = targetAsREDSelectorResolver->onResolveREDUISliderSelector(target, selectorName.c_str());
- if (handler != 0) {
- event = std::function<void(Ref *, cocos2d::ui::Slider::EventType)>(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<void(Ref *, cocos2d::ui::Slider::EventType)>(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);
- }
- }
- }
|