加载带有 onload 的图像数组,如何限制将它们绘制到画布
Loading array of images with onload, how do I throttle drawing them to canvas?
限制
大量图像加载函数的最佳方法是什么?代码示例:
while( images.length <= 500 ){
img.onload = function() {
drawImage(image,0,0,500,500);
}
}
我试图防止当这 500 张图像大约同时返回时同时发生所有绘图。我试过将加载包装在 setTimeout 中,但我不想限制图像的下载,只是在绘制它们时。 谢谢。
像javascript canvas中的大多数东西一样drawImage
方法是同步的。这意味着在完成工作之前,它不会进一步执行代码。您的图像确实是一一加载的,但它是如此之快,以至于您看不到它。
要为图像加载添加延迟,我们可以进行某种队列。我们将图像添加到数组中,并在一段时间后执行绘制函数:
img.onload = function() {
images.push(img);
};
(...)
var i = 0;
var images = [];
var timeoutFn;
(function draw() {
if (images.length) {
drawImage(images[0],0,0,500,500);
images.shift();
}
timeoutFn = setTimeout(draw, 1000);
})();
现在,您需要在加载所有图像后设置timeoutFn = null
。我希望你明白这个想法。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- FabricJs-限制主对象内添加对象的移动区域
- 有没有一个javascript图形绘制库可以进行气球树布局
- 限制javascript变量的最小/最大整数
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- “可绘制地图”设置地图选项“纬度-经度”
- Jquery限制输入框中的文本
- 将鼠标旋转限制为特定的度数
- 多维数据集网格未在指定的分区中绘制
- 使用谷歌图表在x轴上绘制日期
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 如何在React Native中绘制图形
- d3.js:限制画笔的大小
- 单击时将功能限制为仅绘制一次
- 加载带有 onload 的图像数组,如何限制将它们绘制到画布
- 如何限制在Fabricjs中自由绘制圆
- 图表.js 2.1.6:绘制水平限制线