int poX;
int speed_3 = 5;
sprite * xx = null;
for(int i=0;icount();i++){
xx = (sprite*)mySceneDatas.array_allxx->objectAtIndex(i);
//poX = xx->getPositionX();
poX = mySceneDatas.xxSize*.width;
poX -= speed_3;
if(poX<=-visibleSize.width){
poX += visibleSize.width;
}
xx->setPositionX(poX);
mySceneDatas.xxSize*.width = poX;
}
```
如上实现场景内地图 道具 金币等元素的循环滚动导致游戏掉帧严重
测试发现时大量的setpostion()引起的
求大神介绍个优化这段代码的方法。。。。。**
使用Cocos Code IDE的话,调试模式下会掉帧很严重。
release没问题,你可以试下。
楼主 的
GL call 和 GL verts 峰值 多少
现在手机cup都很强的。。。 。
掉帧很可能是绘制 造成。
GL call 40左右
GL verts 2000+(播放动画特效的时候)
平时稳定1200+
这 数值 那应该没问题的。
把这个
for(int i=0;i<mySceneDatas.array_allxx->count();i++)
换成
int cout=mySceneDatas.array_allxx->count();
for(int i=0;i<cout;i++)
试试,如果不行,
就试试 偶尔e网事 说的吧。
掉帧主要是setpostion引起的
因为每一帧每一个精灵都要set一次
虽然不知道为什么会这样
但是
if(poX<1000&&pox>-100){
xx->setpostion(poX);
}
加了个这样的条件减少set的次数就不卡了
(就是每次都调整Size]保存的坐标,但只set符合要求的)
ps:测试过 总共有420+精灵
限制后大概只有10%的精灵每一帧要set;
但是我感觉 420+的精灵应该不至于让程序掉帧那么严重啊
你是使用Cocos Code IDE么?
没 只是cocos2dx 3.2
卡的问题暂时解决了。。。。但是 现在在真机上运行帧数会超过60 然后挂掉
批量更新 batch render
敢问你卡的问题怎么解决的
把这些东西放在一个node里 然后移动根node
我是放在一个node里移动的,但就是掉帧
挖坑,楼主解决了吗?setposition是否有BUG啊