我有这个代码:
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 );
});
所以当kick 被踢时,它触发kick 声音,当snare 被点击它触发snare 声音等等......每个setup 属性中的sound 属性描述了应该播放的声音。
问题是,所有点击事件都会触发“帽子”声音。我发现这是因为“帽子”属性是设置对象中的最后一个。
我究竟做错了什么?是因为回调吗?
如果您访问此处,您将看到一个示例。
另外,在这个例子中,如果你双击,它只会触发一次声音,当它应该触发两次时!那是怎么回事?