Javascript:将图像对象添加到类的最有效方法

时间:2014-02-06 20:20:01

标签: javascript sprite

我正在添加一个图像对象作为类的属性,我当前的方法如下:

Arrow = function(src) {
  this.spriteArrow = new Image();
  this.spriteArrow.src = src;
}

如果我创建箭头类的多个实例,它会多次加载相同的图像吗?或者应该在箭头类的范围之外创建te图像,以便它只创建一次?

1 个答案:

答案 0 :(得分:1)

这可能不合标准,但你在评论中提出的问题需要自己的答案。

保持图像分离的一个好处是您可以自己管理资源加载。例如:(伪代码!不要复制粘贴)

var listOfResources = ['Arrow.png', 'character.png'];
foreach resource in listOfResources: {
  var img = new Image()
  img.src = resource
  var onloadCalls = [];
  img.onLoad = function: foreach call in onLoadCalls: call();
  function addCall(call) { onLoadCalls.push(call); }
  loadingResources[resource] = {
    img: img,
    onLoad: addCall
  };
}


// anything that wants to wait until Arrow.png is ready calls this:
loadingResources['Arrow.png'].onLoad(function() ...blah...);

如果这对你没有多大意义,那么它可能并不重要,但对于大规模HTML5游戏可能很有用,因为很多东西都会尽快激活,而不是等待为每个要加载的资源。