我试图将点击事件监听器添加到不同的SVG位图图像。每个点击事件都应该执行不同的功能。将点击事件监听器添加到SVG位图图像
这里是我的JS代码:
<script>
var stage;
var images = [];
function init() {
stage = new createjs.Stage("kort");
addImage("/assets/images/kort.png", 0.65, 0.65, 0, 0);
addImage("/assets/images/kirke.png", 0.25, 0.25, 250, 250);
addImage("/assets/images/mølle.png", 0.4, 0.4, 335, 100);
addImage("/assets/images/skib.png", 0.25, 0.25, 30, 375);
addImage("/assets/images/hestesko.png", 0.3, 0.3, 100, 75);
console.log("Images added")
addClickEvents();
function addImage(url, scaleX, scaleY, locX, locY) {
var image = new Image();
image.src = url;
image.onload = function() { //indsæt kun billede når det er loadet
var imageBitmap = new createjs.Bitmap(image);
imageBitmap.x = locX;
imageBitmap.y = locY;
imageBitmap.scaleX = scaleX;
imageBitmap.scaleY = scaleY;
images.push(imageBitmap);
console.log("Image pushed to array");
stage.addChild(imageBitmap);
stage.update();
}
}
function addClickEvents() {
images[1].on("mousedown", function (evt) {
this.alpha = 0.1;
stage.update();
set(0, true);
});
}
}
当我运行此代码,我收到了一个错误:
Uncaught TypeError: Cannot read property 'on' of undefined
at addClickEvents ((index):52)
at init ((index):33)
at onload ((index):9)"
似乎将之前运行addClickEvents()函数图像,所以数组是空的,所以它试图添加一个未定义的事件。
事实上,它确实是在添加异步onload回调中的图像。所以你的分析是正确的。 –