方法1
掉幀主要是setpostion引起的
因為每一幀每一個精靈都要set一次
雖然不知道為什么會這樣
但是
if(poX<1000&&pox>-100){
xx->setpostion(poX);
}
加了個這樣的條件減少set的次數就不卡了
(就是每次都調整Size[]保存的坐標,但只set符合要求的)
ps:測試過 總共有420+精靈
限制后大概只有10%的精靈每一幀要set;
但是我感覺 420+的精靈應該不至於讓程序掉幀那么嚴重啊
方法2
要做遞歸動畫最好是用CCMoveBy這個 可能比較好些 setpositon的話 是重新定位可能會導致 sprite的 位置變動卡
方法3
也許是創建太多精靈或者加載太多圖片,顯示之后隱藏,沒釋放
方法4
update有個參數delta,
計算運動距離的時候考慮這個delta值(也就是時間差量)
通常都是 移動速度(像素/秒)×(delta)
理論上這樣不會有問題,我都是這么處理的
方法5
你確定你的update是每一幀調用的不是你自定義時間的?
方法6
寫到定時器里而不是update里試試
方法7
update函數有個參數 fDelta
如果你想設置每秒橫移X個像素 正確的寫法應該是
sprite->setPositionX(X * fDelta);
方法8
在AppDelegate.cpp文件里面降低幀率上限為50,雖然畫面沒有那么流暢,但是不會突然卡一下
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 50);
