javascript - 如何异步加载图像?

标签 javascript image asynchronous

我正在使用 GLGE(有点像 webGl)将图像加载到纹理贴图上。然而,为了加载速度,我首先加载低分辨率图像(这样会更快),然后在加载大图像后将 src 更改为高分辨率图像。这就是我现在正在做的

var texture =  new GLGE.texture();
function updateTexture(){
    var image=new Image();
    image.src = "models/testLargeMap_map0.jpg"; // load image

    image.onload = function(){
        texture.image("models/testLargeMap_map0.jpg"); // supposedly swap image on load (not working as I thought)
    }   
}

但是,在更改 src 期间,模型及其所有功能会卡住。我如何让它异步加载图像并在加载时将其交换到更高的纹理以实现平滑的瞬时纹理变化?

最佳答案

您可以像这样设置一个 image.onload 事件处理程序:

var big_image = new Image();
big_image.onload = function () {
    texture.image("models/testLargeMap_map0.jpg");
}
big_image.src = "models/testLargeMap_map0.jpg";

(请注意,我先设置 onload 处理程序,然后设置 src 属性。如果我反过来设置,在 IE 中会失败)。

这将在调用 texture.image 之前预加载图像。不过我对这个库一无所知,所以我不能确定它会使用预加载的图像。

关于javascript - 如何异步加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173467/

相关文章:

javascript - ExtJs 动画 - 无限显示/淡入淡出元素

HTML - 图像可以在没有在线托管的情况下显示吗?

javascript - 从 API 中提取文件并通过管道传输它会导致在我尝试读取它时出现文件未找到错误

javascript - 异步推送数组中的项目

c# - 在 C# 中,如何让一组任务完成后运行一个任务?

javascript - 如果 hash 仅包含 1 个字符串,则忽略其他 if 语句

javascript - 使用数据的 .filter 获取特定值

javascript - Backbone Paginator Collection 在重置时不触发渲染

html - 为什么转化跟踪使用像素,为什么图像可能会暴露您的信息?

javascript - 对于网站 : How do I make an image follow the mouse pointer only in a certain area?