我試圖將點擊事件監聽器添加到不同的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回調中的圖像。所以你的分析是正確的。 –