UICheckBoxLoader.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "UICheckBoxLoader.h"
  2. #include "REDSelectorResolver.h"
  3. using namespace std;
  4. using namespace cocos2d;
  5. using namespace cocos2d::ui;
  6. namespace redream {
  7. #define PROPERTY_CLICKEVENT "clickEvent"
  8. void CheckBoxLoader::onHandlePropTypeCallbacks(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, CallbacksData * pCallbacksData, REDReader * ccbReader) {
  9. cocos2d::ui::CheckBox::ccCheckBoxCallback event = 0;
  10. if (pCallbacksData != nullptr) {
  11. cocos2d::Ref * target = pCallbacksData->_target;
  12. std::string selectorName = pCallbacksData->selectorName;
  13. REDSelectorResolver * targetAsREDSelectorResolver = dynamic_cast<REDSelectorResolver *>(target);
  14. if(targetAsREDSelectorResolver != nullptr)
  15. {
  16. auto handler = targetAsREDSelectorResolver->onResolveREDUICheckBoxSelector(target, selectorName.c_str());
  17. if (handler != 0) {
  18. event = std::function<void(Ref *, CheckBox::EventType)>(std::bind(handler, target, std::placeholders::_1, std::placeholders::_2));
  19. }
  20. }
  21. if(event == 0)
  22. {
  23. REDSelectorResolver * ccbSelectorResolver = ccbReader->getREDSelectorResolver();
  24. if(ccbSelectorResolver != nullptr)
  25. {
  26. auto handler = ccbSelectorResolver->onResolveREDUICheckBoxSelector(target, selectorName.c_str());
  27. if (handler != 0) {
  28. event = std::function<void(Ref *, CheckBox::EventType)>(std::bind(handler, target, std::placeholders::_1, std::placeholders::_2));
  29. }
  30. }
  31. }
  32. }
  33. else {
  34. return;
  35. }
  36. if (strcmp(pPropertyName, PROPERTY_CLICKEVENT) == 0) {
  37. ((CheckBox *)pNode)->addEventListener(event);
  38. }
  39. else {
  40. AbstractCheckButtonLoader::onHandlePropTypeCallbacks(pNode, pParent, pPropertyName, pCallbacksData, ccbReader);
  41. }
  42. }
  43. }