Cocos进度条和批处理渲染

进度条

进度条实际上就是用ProgressTimer挡住一个精灵,之后随着时间逐渐展开

Sprite* bg = Sprite::create("ccs-res/cocosui/loadingbar.png");//背景

Sprite* fore = Sprite::create("ccs-res/cocosui/slidbar.png");//前景

ProgressTimer* timer = ProgressTimer::create(fore); //前景放入timer

bg->addChild(timer); //必须把进度条放入背景中

timer->setPosition(bg->getAnchorPointInPoints());//让进度条和背景重合,进度条的锚点也在中心,通过getAnchorPointInPoints获取坐标

addChild(bg);

之后,必须修改一下进度条的属性:

timer->setType(ProgressTimer::Type::BAR); //进度条类型,有条状BAR,有时钟状RADIAL

timer->setMidpoint(Vec2(0, 0)); //进度条的起始点,从左到右(0,y),从右到左(1,y),从下到上(x,0),从上到下(x,1),最大取值1,如设(0,0)即从左下角开始。

timer->setBarChangeRate(Vec2(1, 0)); //设置进度条推进策略,(1,0)表示沿x轴推进,y轴每次都是100%。

timer->setPercentage(0); //设置进度条的进度,按百分比。我们是通过这个函数来控制进度的。


批处理渲染

同一个纹理的精灵一起来渲染——增加效率。称之为批处理精灵

SpriteBatchNode* node = SpriteBatchNode::create("CloseNormal.png");

addChild(node);

如果我想添加1W个这样的精灵:用循环将精灵添加入批处理精灵中

for (int i = 0; i <10000; ++i)

{Sprite* sprite = Sprite::createWithTexture(node->getTexture());

node->addChild(sprite);}

3.6的cocos提供了自动批处理,但是其效果差强人意。

 

为何批处理精灵这么快?

因为BatchNode重载了visit函数,该函数并没有遍历所有子节点,而是将节点信息组织成一个draw(也被重载)命令发送给绘制线程。故此提高了效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值