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

 

转载于:https://www.cnblogs.com/SkyflyBird/p/5014189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值