UISliderLoader.cpp 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "UISliderLoader.h"
  2. #include "REDSelectorResolver.h"
  3. using namespace std;
  4. using namespace cocos2d;
  5. using namespace cocos2d::ui;
  6. namespace redream {
  7. #define PROPERTY_BAR "bar"
  8. #define PROPERTY_BALL "ball"
  9. #define PROPERTY_PERCENT "percent"
  10. #define PROPERTY_VALUEEVENT "valueEvent"
  11. void SliderLoader::onHandlePropTypeFrameSet(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, std::vector<FramePath> pFrameSet, REDReader * ccbReader) {
  12. if (strcmp(pPropertyName, PROPERTY_BAR) == 0) {
  13. ((Slider *)pNode)->loadBarTexture(pFrameSet.at(0).path, pFrameSet.at(0).texType);
  14. ((Slider *)pNode)->loadProgressBarTexture(pFrameSet.at(1).path, pFrameSet.at(1).texType);
  15. }
  16. else if (strcmp(pPropertyName, PROPERTY_BALL) == 0) {
  17. ((Slider *)pNode)->loadSlidBallTextureNormal(pFrameSet.at(0).path, pFrameSet.at(0).texType);
  18. ((Slider *)pNode)->loadSlidBallTexturePressed(pFrameSet.at(0).path, pFrameSet.at(0).texType);
  19. ((Slider *)pNode)->loadSlidBallTextureDisabled(pFrameSet.at(0).path, pFrameSet.at(0).texType);
  20. }
  21. else {
  22. WidgetLoader::onHandlePropTypeFrameSet(pNode, pParent, pPropertyName, pFrameSet, ccbReader);
  23. }
  24. }
  25. void SliderLoader::onHandlePropTypePercent(cocos2d::Node * pNode, cocos2d::Node * pParent, const char * pPropertyName, int pValue, REDReader * ccbReader) {
  26. if (strcmp(pPropertyName, PROPERTY_PERCENT) == 0) {
  27. ((Slider *)pNode)->setPercent(pValue);
  28. }
  29. else {
  30. WidgetLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pValue, ccbReader);
  31. }
  32. }
  33. void SliderLoader::onHandlePropTypeCallbacks(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, CallbacksData * pCallbacksData, REDReader * ccbReader) {
  34. cocos2d::ui::Slider::ccSliderCallback event = 0;
  35. if (pCallbacksData != nullptr) {
  36. cocos2d::Ref * target = pCallbacksData->_target;
  37. std::string selectorName = pCallbacksData->selectorName;
  38. REDSelectorResolver * targetAsREDSelectorResolver = dynamic_cast<REDSelectorResolver *>(target);
  39. if(targetAsREDSelectorResolver != nullptr)
  40. {
  41. auto handler = targetAsREDSelectorResolver->onResolveREDUISliderSelector(target, selectorName.c_str());
  42. if (handler != 0) {
  43. event = std::function<void(Ref *, cocos2d::ui::Slider::EventType)>(std::bind(handler, target, std::placeholders::_1, std::placeholders::_2));
  44. }
  45. }
  46. if(event == 0)
  47. {
  48. REDSelectorResolver * ccbSelectorResolver = ccbReader->getREDSelectorResolver();
  49. if(ccbSelectorResolver != nullptr)
  50. {
  51. auto handler = ccbSelectorResolver->onResolveREDUISliderSelector(target, selectorName.c_str());
  52. if (handler != 0) {
  53. event = std::function<void(Ref *, cocos2d::ui::Slider::EventType)>(std::bind(handler, target, std::placeholders::_1, std::placeholders::_2));
  54. }
  55. }
  56. }
  57. }
  58. else {
  59. return;
  60. }
  61. if (strcmp(pPropertyName, PROPERTY_VALUEEVENT) == 0) {
  62. ((Slider *)pNode)->addEventListener(event);
  63. }
  64. else {
  65. WidgetLoader::onHandlePropTypeCallbacks(pNode, pParent, pPropertyName, pCallbacksData, ccbReader);
  66. }
  67. }
  68. }