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()。

  • 相关阅读:
    解决jar包冲突
    postman使用记录
    get请求直接通过浏览器发请求传数组或者list到后台
    excel中ppmt/pmt/ipmt的计算方式
    unicode编码与解码
    spring参数拼装
    java内存模型(jmm)
    Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)
    星空雅梦
    星空雅梦
  • 原文地址:https://www.cnblogs.com/SkyflyBird/p/5014189.html
Copyright © 2011-2022 走看看