码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2d-x UILoadingBar::SetPercent 崩溃

时间:2015-12-02 22:17:14      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 

可能这个方法不是最好的,但是对于不想改掉底层,同时各种原因而不得不使用老版本的cocos2d-x的,可能对于新人来说,还算得上是一种可采取的方法吧。

 

cocos2d-x UILoadingBar::SetPercent 崩溃

标签:

原文地址:http://www.cnblogs.com/SkyflyBird/p/5014189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!