Cocos2dx3.x版本在部分安卓手机(某X为居多)精灵渲染不出问题

本文分析了LabelAtlas组件在设置字符串为空时导致精灵无法正常绘制的问题。详细解释了LabelAtlas::setString方法内部逻辑,特别是当传入字符串长度超过纹理图集容量时的处理方式。并给出了解决方案,即避免将第一个参数设为空。

原因在于执行LabelAtlas::create("","prop_num.png",16,20,'0')函数后,第一个string参数如果填空,执行setstring方法时,跳过_textureAtlas->resizeCapacity(len);。

所以紧接着的一个精灵绘制不出 


void LabelAtlas::setString(const std::string &label)
{
    ssize_t len = label.size();
    if (len > _textureAtlas->getTotalQuads())
    {
        _textureAtlas->resizeCapacity(len);
    }
    _string.clear();
    _string = label;
    this->updateAtlasValues();


    Size s = Size(len * _itemWidth, _itemHeight);


    this->setContentSize(s);


    _quadsToDraw = len;
}

所以第一个参数不要置空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值