【发布时间】:2019-03-10 23:11:47
【问题描述】:
我正在使用 HTML5 和 JavaScript 创建一个游戏,它将使用大量图像。同时拥有所有这些图像会占用大量内存,我想知道如何加载/卸载不同的图像,这样玩游戏的人就不需要 8GB 左右的内存来存储图像。
<img src = "source1" id = "img1"></img>
<img src = "source2" id = "img2"></img>
<img src = "source3" id = "img3"></img>
<!--Just imagine this for every image, which is likely going to peak over 10,000 at some point-->
<img src = "source10000" id = "img10000"></img>
<canvas width = "1350" height = "600" id = "canva"></canvas>
<script>
var canvas = document.getElementById("canva");
var can = canvas.getContext("2d");
var imge = function(im, x, y, w, h) {
can.drawImage(document.getElementById(im), x, y, w, h);
};
var playerX = 0;
var playerY = 0;
var run = function() {
imge("img1", playerX, playerY, 32, 32);
//Need to use tones of images
requestAnimationFrame(run);
};
run();
</script>
我不需要一次使用 10,000 张图像,更像是一次使用 60 张(玩家动画、方块、敌人动画、粒子等),而且由于我处于开发初期,因此我愿意接受重做一些东西,比如我如何抓取图像。
问题:如何在 HTML5/JavaScrpit 中加载/卸载图像
【问题讨论】:
-
不要使用太多图像。最好用多个精灵创建更大的图像,并使用 CSS 背景定位对其进行动画处理。看看这里的例子:spriters-resource.com/snes/smarioworld/sheet/53664
-
8GB 图片?你的游戏的生命周期是多久?如果你不做一个开放的世界,这听起来有点多。可能有一些你必须在那里检查的东西。
-
@Kaiido 说得太夸张了。我的游戏最多只需要 500MB。
-
为什么要夸大?您处理 500MB 资产和 8GB 资产的方式不同......
-
我的意思是使用了多少内存,而不是存储空间。如果我加载了 10,000 张图片而我只使用了其中的 60 张,那么我在 9,940 张未使用的图片上浪费了内存。
标签: javascript html canvas