#include "UICheckBoxLoader.h" #include "REDSelectorResolver.h" using namespace std; using namespace cocos2d; using namespace cocos2d::ui; namespace redream { #define PROPERTY_CLICKEVENT "clickEvent" void CheckBoxLoader::onHandlePropTypeCallbacks(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, CallbacksData * pCallbacksData, REDReader * ccbReader) { cocos2d::ui::CheckBox::ccCheckBoxCallback 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->onResolveREDUICheckBoxSelector(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->onResolveREDUICheckBoxSelector(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_CLICKEVENT) == 0) { ((CheckBox *)pNode)->addEventListener(event); } else { AbstractCheckButtonLoader::onHandlePropTypeCallbacks(pNode, pParent, pPropertyName, pCallbacksData, ccbReader); } } }