zoukankan      html  css  js  c++  java
  • cocos2d-x 2.2.6 UILoadingBar::SetPercent 崩溃

    使用cocostudio1.6.0 UI Editor创建的进度条UI加载在Cocos2d-x版本时,其原有的代码示例如下:

    UILoadingBar* pBar = NULL;
    
    pBar =dynamic_cast<UILoadingBar*>(m_pUILayer->getWidgetByName("Bar"));
    pBar->SetDirection(LoadingBarTypeLeft);
    pBar->setPercent(70);

    然后运行代码,结果就崩溃了。然后在vs2010上使用断点跟踪,发现在:

    void LoadingBar::SetPercent(int percent)
    {
       //...
      if(_totalLength <= 0)    // 在这里发现该变量为0,结果导致程序直接跳出而导致崩溃
        return;
    }

    既然发现了问题所在,根据自己的理解,就想办法给_totalLength 赋值即可。然而,很可惜,没有找到相关的赋值函数,甚至为_totalLength赋值的函数接口LoadingBar::barRendererScaleChangedWithSize()也是protected的。

    既然如此,最后使用了这样的方法来编写程序:

    UILoadingBar* pBar = NULL;
    
    m_pLevBar = UILoadingBar::create();
    m_pLevBar->loadTexture("bar.png",UI_TEX_TYPE_PLIST);
    m_pLevBar->setAnchorPoint(ccp(0.5f,0.5f));
    m_pLevBar->setPosition(ccp(156,568));
    
    pBar->SetDirection(LoadingBarTypeLeft);
    pBar->setPercent(70);

    主要原因在与loadTexture,在其接口的内部调用了barRendererScaleChangedWithSize()。

  • 相关阅读:
    HTML DOM 06 节点关系
    HTML DOM 05 事件(三)
    HTML DOM 05 事件(二)
    HTML DOM 05 事件(一)
    html DOM 04 样式
    html DOM 03 节点的属性
    html DOM 02 获取节点
    html DOM 01 节点概念
    JavaScript 29 计时器
    JavaScript 28 弹出框
  • 原文地址:https://www.cnblogs.com/SkyflyBird/p/5014189.html
Copyright © 2011-2022 走看看