我正在写关于HTML5画布的移动浏览器性能。我试图做一个简单的平台游戏(如超级马里奥兄弟)。我有一个主角,两个敌人和街区模仿跳跃平台。角色和敌人由drawImage绘制,block由fillRect绘制(现在,稍后它也将绘制图像)。一切都是动画的(当角色移动时,角色X被添加到块X等)。画布多个图像和移动浏览器性能
现在我试图添加一些随机硬币。 首先,我创建的变量对图片
var coinB = new Image();
coinB.src = 'coin.png';
接下来我创建阵列与随机X和Y对象:
var k;
for (k = 0; k <= 30; k++) {
coins.push({
x: Math.floor(Math.random() * 36 + 4) * 100,
y: Math.floor(Math.random() * 3 + 1) * 100,
width:25,
height:25
});
}
而在这之后,我试图选择一切,并得出:
var l;
/* left is the character X for the animation */
for (l = 0; l < coins.length; l++) {
ctx.drawImage(coinB, coins[l].x - left, coins[l].y, coins[l].width, coins[l].height);
}
一切都在requestAnimFrame中的函数()中。
不幸的是,此后,游戏的移动FireFox(Chrome Mobile 20-30 fps)的游戏速度大约为30fps(从之前的60 fps没有硬币)。所以它的硬币大约是fps的一半。
有没有更好的方法来导入图像并绘制它们?例如,我为所有事情做了new Image()
(mainchar = new Image(),enemy = new Image(),coin = new Image()= ect),与.src
一样。我认为这不是最好的解决方案。 我应该怎么做,以获得更好的性能(减少fps)? 谢谢你的帮助。
初始化主环路外的硬币怎么样?实例化对象不是免费的。你也可以用'for(l = 0,len = coins.length; i
danielepolencic