无效的图像src错误

Invalid image src error

本文关键字:错误 src 图像 无效      更新时间:2023-09-26
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:试图使用的对象不可用或不再可用。

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

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;

或者在onload函数内的层中添加nodeIcon

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;