[cocos2d-x3.3]cocostudio的Button按钮触发两次回调函数问题解决

前端之家收集整理的这篇文章主要介绍了[cocos2d-x3.3]cocostudio的Button按钮触发两次回调函数问题解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上周刚刚入职一家手游公司,应主管大神的要求开始编辑页面ui,在添加button时发现一个问题,第一次button按钮,回调一次添加函数,但是之后就会点击一次回调两次,

问题在有,ui中的按钮将button事件集成了,点击按钮会执行 集成下的事件 解决方案就是为按钮的事件添加事件类型的选择

代码如下:

   auto rootNode = CSLoader::createNode("MainScene.csb");
    rootNode->setTag(111);
    addChild(rootNode);
新出的cocos引擎v1.0 PreView集成下的cocostudio可以将编辑好的ui界面直接生成.csb文件并且发布到xcode工程(6以上版本)

 auto common_silver=static_cast<ui::Button *>(rootNode->getChildByTag(12)->getChildByTag(13)->getChildByName("Button_5"));
    common_silver->addTouchEventListener(this,toucheventselector(HelloWorld::touchEvent));


获取ui中的Buttonu并且执行回调函数,参数添加事件类型选择

  void touchEvent(Ref *pSender,TouchEventType type);
void HelloWorld::touchEvent(Ref *pSender,TouchEventType type)
{
    switch (type)
    {
        case TOUCH_EVENT_BEGAN://触摸开始
            if (silvercount>=2000)
            {
                //
                auto label=(Label*)getChildByTag(111)->getChildByTag(12)->getChildByTag(13)->getChildByTag(116);
                count+=10;
                label->setString(StringUtils::format("战力提升%d%%",count));
                
                silvercount-=2000;
                auto label2=(Label*)getChildByTag(111)->getChildByTag(115);
                label2->setString(StringUtils::format("%d",silvercount));
                
                
            }
            else
            {
                auto msg_toast_bg=Sprite::create("res/iphone/msg_toast_bg.png");
                this->addChild(msg_toast_bg);
                msg_toast_bg->setPosition(320,400);
                auto msg_toast_label=Label::createWithSystemFont("银币不够","",30);
                msg_toast_bg->addChild(msg_toast_label);
                msg_toast_label->setPosition(320,25);
                msg_toast_bg->runAction(MoveTo::create(2,Point(320,600)));
                msg_toast_bg->runAction(Sequence::create(FadeIn::create(1),FadeOut::create(0.1f ),NULL));
                 msg_toast_label->runAction(Sequence::create(FadeIn::create(1),NULL));
              //  msg_toast_bg->runAction(Sequence::create(MoveTo::create(2,600),CallFunc::create( HelloWorld::jump(),this) ),NULL));
                //msg_toast_bg->runAction(Sequence::create(MoveTo::create(2,600)),CallFunc::create(this,callfunc_selector(this,(HelloWorld::jump()))),NULL));

            break;
    }
}
}

循环播放一个动画

 mowangb->runAction(RepeatForever::create(Sequence::create(ScaleTo::create(2,1.05),ScaleTo::create(2,1),NULL)));
<p class="p1">msg_toast_bg-><span class="s1">runAction</span>(<span class="s2">MoveTo</span>::<span class="s1">create</span>(<span class="s3">2</span>,<span class="s2">Point</span>(<span class="s3">320</span>,<span class="s3">600</span>)));</p>

设置一个层的现实隐藏
panle->setVisile(false);
panle->setVisible(true);
循环事件 每0.05执行一边
this->schedule(schedule_selector(Helloworld::hplogic),0.05);
转义字符%%
 label2->setString(StringUtils::format("%d",silvercount));
事件的暂停与启用
if (panelGold->isVisible()){
                            Director::getInstance()->getEventDispatcher()->pauseEventListenersForTarget(this);
                        }else{
                          Director::getInstance()->getEventDispatcher()->resumeEventListenersForTarget(this);
                        }

cocostudio中loardingbar的使用
void HelloWorld::hpLogic(float t)
{    hp++;
    CCLOG("%d",hp);
    if (hp>=100) {
        hp=0;
    }
   
    auto loadingBar_left_to_right=static_cast<ui::LoadingBar *>(getChildByTag(111)->getChildByName("LoadingBar_1"));
    loadingBar_left_to_right->setPercent(hp);
  
    
}
原文链接:https://www.f2er.com/cocos2dx/346481.html

猜你在找的Cocos2d-x相关文章