我正在寫關於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