图像src错误无效

时间:2014-04-09 03:02:54

标签: javascript html5 kineticjs

var nodeIconImg = new Image();
nodeIconImg.onload = function () {

    var nodeIcon = new Kinetic.Image({
        image: nodeIconImg,
        width: 30,
        height: 30
    });
}

var url = '<?= $baseurl; ?>/img/' + node.main_photo;
nodeIconImg.src = url;

这是kinetic.js中发生错误的核心代码行(完全在drawImage方法中):

drawImage: function () {
    var a = arguments,
        b = this._context;
    3 === a.length ? b.drawImage(a[0], a[1], a[2]) : 5 === a.length ? b.drawImage(a[0], a[1], a[2], a[3], a[4]) : 9 === a.length && b.drawImage(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])
}

错误消息是:

  

Uncaught InvalidStateError:尝试使用该对象   是不是,或不再可用。

有什么想法吗?有人有这个问题吗?

1 个答案:

答案 0 :(得分:0)

onload函数完成后,你的nodeIcon不在范围内。

稍后在代码中尝试使用nodeIcon时,不再定义它并抛出错误。

您需要在onload函数之外声明var nodeIcon

var nodeIcon;

var nodeIconImg = new Image();
nodeIconImg.onload = function () {

    nodeIcon = new Kinetic.Image({
        image: nodeIconImg,
        width: 30,
        height: 30
    });

}
var url = "ship.png";
nodeIconImg.src = url;

或者将nodeIcon添加到onload函数内的图层

var nodeIconImg = new Image();
nodeIconImg.onload = function () {

    var nodeIcon = new Kinetic.Image({
        image: nodeIconImg,
        width: 30,
        height: 30
    });
    layer.add(nodeIcon);
    layer.draw();

}
var url = "ship.png";
nodeIconImg.src = url;