画布FPS在调整屏幕大小时发生变化-Javascript
The canvas FPS changes on resizen the screen - Javascript
所以我正在构建一个简单的粒子系统,我想对每个屏幕都做出响应。我在其他地方使用了一个调整大小的脚本来将画布添加到整个浏览器中。
问题是,当你调整屏幕大小时,fps越来越高,粒子下降得很快,我不知道是什么问题!
http://jsfiddle.net/gikdew/J6vLg/5/
function initialize() {
// Register an event listener to
// call the resizeCanvas() function each time
// the window is resized.
window.addEventListener('resize', resizeCanvas, false);
// Draw canvas border for the first time.
resizeCanvas();
}
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
game();
}
function game() {
var tick = 0;
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / fps);
};
})();
(function animloop(){
requestAnimFrame(animloop);
createParticles();
updateParticles();
killParticles();
drawParticles();
})();
animloop();
这是因为每次调整大小时都会在game()
内部启动一个新循环。由于rAF是异步的,每次调用都会累积,从而影响您正在使用的变量。
如果你把循环放在外面,你应该没事(你也可以用一个标志来阻止几次运行):
/// this should in global scope:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / fps);
};
})();
然后是主要代码:
var isRunning = false;
/// do needed stuff here
function game() {
var tick = 0;
}
/// call manually the first time before loop starts
game();
/// run loop
(function animloop(){
requestAnimFrame(animloop);
createParticles();
updateParticles();
killParticles();
drawParticles();
})();
相关文章:
- 重新加载页面时Javascript变量发生变化
- Javascript对象颜色动态变化
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何使用Javascript使屏幕颜色随时间变化
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- JavaScript:为什么不't将背景变化发送给用户's选择(简单)
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- HTML/Javascript-360度图片的路径更改(显示不同的变化)
- JavaScript中的style.clip会随着时间的推移而变化
- Javascript Circle滑块随时间变化
- 在异步函数调用过程中,当对象的属性值发生变化时,JavaScript中的对象属性值会发生什么变化
- 画布FPS在调整屏幕大小时发生变化-Javascript
- Javascript:Coderbyte挑战4:字母变化:帮助分析代码:这是如何大写元音的,以及何时执行else语句
- Javascript单元测试依赖关系-当依赖对象发生变化时,如何使测试失败
- 输入时Javascript背景颜色会发生变化
- Javascript旋转初始BG颜色变化
- 按下和向上键时,Javascript图像会发生变化
- 当从servlet返回到JSP时,Javascript的变化非常明显
- 颜色变化Javascript
- 如何检测iOS7 Safari滚动时的高度变化- JavaScript