pixi.jsにはticker
という機能があり、ほとんどの場合においてFPS60でループ処理をしてくれる。
しかし、環境にも依るかもしれないが、スマホの「低電力モード」が発動しているとFPSが30まで低下する。
script.js
let app = new PIXI.Application({});
app.ticker.add(loop);
function loop(delta){
console.log(app.ticker.FPS);
}
このような書き方だと、端末の状態によってループ速度が変わってしまい、いろいろなところに影響が出る。
そこで次のようにして無理やり解決を試みた。
script.js
let app = new PIXI.Application({});
app.ticker.add(loop);
function loop(delta){
for(let i=0;i<Math.round(delta);i++){
main();
}
}
function main(){
console.log(app.ticker.FPS);
}
delta
はapp.ticker.deltaTime
の値であり、前のフレームから今のフレームまでの経過時間を【1/60秒】の単位で出してくれる。
もしdelta
が2に近い場合、つまりFPSが半分になっている場合は、loop
の内容を2回繰り返す。
こうすれば、描画自体はもっさりとするが処理はほぼ想定通りの速度でやってくれる。
2021/06/02 試行錯誤の続き→pixi.jsでtickerのFPSが端末の状態に依存しないように見せる