123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #include "RUQCoreBtn.h"
- NS_RU_BEGIN
- QCoreBtn * QCoreBtn::Layer(string file)
- {
- auto *lib = redream::NodeLoaderLibrary::newDefaultNodeLoaderLibrary();
- lib->registerNodeLoader("QCoreBtn",QCoreBtnLoader::loader());
-
- redream::REDReader *reader = new redream::REDReader(lib);
- reader->autorelease();
- QCoreBtn * node = (QCoreBtn*)reader->readNodeGraphFromFile(file.c_str());
- node->setAnimManager(reader->getAnimationManagers());
- return node;
- }
- Control::Handler QCoreBtn::onResolveREDCCControlSelector(Ref * pTarget, const char * pSelectorName) {
- RED_SELECTORRESOLVER_CCCONTROL_GLUE(this, "OnClickCCBButton", QCoreBtn::OnClickCCBButton);
- return nullptr;
- }
- void QCoreBtn::onNodeLoaded(cocos2d::Node * node, redream::NodeLoader * nodeLoader) {
- _bCanClickButton=true;
-
- _tapTL = "tap";
- _releaseTL = "release";
-
- QCoreLayer::onNodeLoaded(node, nodeLoader);
- }
- void QCoreBtn::OnClickCCBButton(cocos2d::Ref *sender, cocos2d::extension::Control::EventType pControlEvent)
- {
- ControlButton* mSender = (ControlButton*)sender;
- _mClickButtonTag = mSender->getTag();
- if(!_bCanClickButton) return;
- auto playAnimateTap = [this]{
- _isPlayRelease = false;
- this->playAnim(_tapTL);
- };
- auto playAmimateRelease = [this]{
- if (!_isPlayRelease) {
- _isPlayRelease = true;
- this->playAnim(_releaseTL);
- }
- };
- auto playAmimateReleaseTap = [this]{
- if (!_isPlayRelease) {
- _isPlayRelease = true;
- this->playAnim("tap copy");
- }
- };
-
- if (pControlEvent == cocos2d::extension::Control::EventType::TOUCH_DOWN) {
- playAnimateTap();
- _lastWorldPos = convertToWorldSpace(Vec2(0,0));
- }else if (pControlEvent == cocos2d::extension::Control::EventType::TOUCH_UP_INSIDE){
- playAmimateRelease();
- auto nowWorldPos = convertToWorldSpace(Vec2(0,0));
- if (abs(nowWorldPos.x - _lastWorldPos.x) <= 50 && abs(nowWorldPos.y - _lastWorldPos.y) <= 50 ) {
- _bCanClickButton = false;
- if (_playEffect) {
- // if (getTag() == 3) {
- // CtlAudioMgr::getInstance()->playEffect(AUDIO_LYSETTING_CLOSE_CLICK);
- // }else if(getTag() == 4){
- // CtlAudioMgr::getInstance()->playEffect(AUDIO_EFX_GAME_BUTTON_CLICK);
- // }else{
- // CtlAudioMgr::getInstance()->playEffect(AUDIO_EFX_WINDOW_PLAY);
- // }
- }
- scheduleOnce(schedule_selector(QCoreBtn::clickBtnSechel),0.02f);
- }
- }else if (pControlEvent == cocos2d::extension::Control::EventType::DRAG_EXIT){
- //这种情况下不能执行playAmimateRelease 否则btn状态与需求不符
- }else if (pControlEvent == cocos2d::extension::Control::EventType::TOUCH_UP_OUTSIDE){
- auto tTime = this->getAnimTime("tap copy");
- if (tTime) {
- playAmimateReleaseTap();
- }else{
- playAmimateRelease();
- }
- }else{
- playAmimateRelease();
- }
- }
- void QCoreBtn::clickBtnSechel(float t)
- {
- if(coreClickButton != nullptr)
- {
- coreClickButton(this,_mClickButtonTag);
- }
- }
- void QCoreBtn::clScheduOnce(float dt)
- {
- scheduleOnce([this](float dt){
- if(coreClickButton != nullptr)
- {
-
- this->coreClickButton(this,-1);
- }
- }, dt, "scheduOnce");
- }
- void QCoreBtn::ResetButton()
- {
- _bCanClickButton = true;
- }
- void QCoreBtn::setTouchEnable(bool enable){
- if (enable) {
- _bCanClickButton = true;
- }else{
- _bCanClickButton = false;
- }
- }
- void QCoreBtn::resetParticle(std::string name)
- {
- ParticleSystemQuad* ps = getParticle(name);
- if (ps != nullptr) {
- ps->resetSystem();
- }
- }
- void QCoreBtn::setTimelines(const char* tl4Tap, const char* tl4Release) {
- _tapTL = tl4Tap;
- _releaseTL = tl4Release;
- }
- void QCoreBtn::ingroPlayEffect(){
- _playEffect = false;
- }
- QCoreBtn::QCoreBtn()
- {
- _playEffect = true;
- _isPlayRelease = true;
- }
- QCoreBtn::~QCoreBtn()
- {
- }
- NS_RU_END
|