我有這樣的代碼:kinetic.js多個點擊事件,在一個循環中,但只註冊的最後一個
var load_image = function(src){
var img = new Image();
img.src = src;
return img;
};
var stage = new Kinetic.Stage({container: 'main', width: 640, height: 480});
var layer = new Kinetic.Layer();
var setup = {
kick : {
sound: 'kick',
image_config : {
image : load_image('/images/bass.png'),
x : 250,
y : 50
}
},
snare : {
sound: 'snare',
image_config : {
image : load_image('/images/snare.png'),
x : 220,
y : 220
}
},
hats : {
sound: 'hats',
image_config : {
image : load_image('/images/hi-hat.png'),
x : 140,
y : 150
}
}
};
var img;
for (name in setup)
{
img = new Kinetic.Image(setup[name].image_config);
img.on('click', function()
{
soundManager.play(setup[name].sound);
});
img.createImageHitRegion(function()
{
layer.drawHit();
},true);
layer.add(img);
}
stage.add(layer);
這裏的問題。對於設置對象中的每個屬性,我想向它添加一個單擊事件。 (如上所示)
img.on('click', function()
{
soundManager.play(setup[name].sound);
});
所以當踢被踢,它觸發踢的聲音,當點擊所述圈套它觸發圈套聲音等等...在每個設置屬性的聲音屬性描述了聲音應該播放。
問題是,所有的點擊事件都會觸發'帽子'的聲音。我發現這是因爲'帽子'屬性是設置對象中的最後一個屬性。
我在做什麼錯了?是否因爲回調?
如果您訪問here,您將看到一個示例。
此外,在這個例子中,如果你雙擊它,它只會觸發一次,當它應該觸發兩次!那是怎麼回事?
另外,你可以把這個代碼放在jsfiddle也許嗎?我知道你在網上有你的例子,但一個jsfiddle會有幫助。 – SoluableNonagon