【发布时间】:2012-02-23 20:59:21
【问题描述】:
我想创建一个具有图像属性的对象,但我希望构造函数仅在加载图像后完成运行。或者用代码来描述:
GraphicObject = Class.extend({
//This is the constructor
init: function(){
this.graphic = new Image();
this.graphic.src = 'path/to/file.png';
while(true)
{
this.graphic.onload = function(){break;};
//I know this won't work since the 'break' is on a different context
//but you got what I try to do.
}
}
})
对于那些不熟悉我在脚本中使用的类表示法的人,它基于this
有什么想法吗?
【问题讨论】:
-
所以您真的希望图像在加载之前阻止所有 JavaScript(以及所有用户交互)?
-
是的。我想知道如果创建了对象,则加载其中的图形。我尝试使用“在对象的每个实例的回调中设置一个标志”,但是在为每个单独的类执行此操作后,我正在扩展它开始变老,我开始寻找一种更自动的方法来做到这一点......
-
只询问图像是否已加载就足够了吗?图像有一个
.complete属性,在加载时设置为true,所以如果有一些代码需要处理图像,但只有在加载时,它可以检查该属性,然后在每个n重试加载前的毫秒数。 -
在这个特定的用例中,我想创建一堆 GraphicObjects,除非它们都被加载,否则不会开始任何交互。如果甚至无法加载,应用程序根本不应该运行。应用程序初始化后不会创建任何 GraphicObject。我知道我可以检查文件是否已加载,但我宁愿知道“如果它运行,它已加载”,因为我很懒并且厌倦了一直编写回调:P
-
嗯,明白了...如果由于某种原因图像没有出现,浏览器可能会锁定...我想我会创建一个预加载器对象...我的问题被视为已回答!
标签: javascript html