现在,我正在使用

var lifeIcon = new Image();
lifeIcon.src = "img/System/lifeIcon.png";


有没有办法在一行中做同样的事情?

我试过了

var lifeIcon = (new Image()).src = "img/System/lifeIcon.png";

但这是行不通的。 lifeIcon被视为字符串...

谢谢。

注意:我有很多张图片。我的目标是在画布上使用图像。
例如:ctx.drawImage(lifeIcon,0,0)



解:

function newImage(src){
    var tmp = new Image();
    tmp.src = src;
    return tmp
}

var lifeIcon = newImage("img/System/lifeIcon.png");
var closeIcon = newImage("img/System/closeIcon.png");
var goldIcon = newImage("img/System/goldIcon.png");
...


注意:我个人觉得这样写起来更快,读起来也更快,特别是因为我有很多图像。

最佳答案

这取决于您接下来要做什么。如果您仅需要附加其他内容,则可以执行以下操作:

element.appendChild(new Image()).src = "img/System/lifeIcon.png";


之所以可行,是因为.appendChild()返回新添加的元素。



如果您需要分配其他属性,那么您可能只想创建一个帮助器函数,使您可以传递包含属性和值的对象。

function create(name, props) {
    var elem = document.createElement(name);
    for (var p in props)
        elem[p] = props[p];
    return elem;
}


这是一个非常简单的功能,可以扩展一点,但是您明白了。

var el = create("img", {src: "img/System/lifeIcon.png"});

10-05 18:06