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:尝试使用该对象 是不是,或不再可用。
有什么想法吗?有人有这个问题吗?
答案 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;