我有下面的代码,它应该找到用户插入div的图像,当他点击“snap”按钮时,它会将这些图像安装到canvas对象中的一个图像中。精细。我可以在画布中找到图像,位置和调整大小,但图像源始终来自最后找到的图像。请有人帮我分析一下这段代码吗?
提前致谢。
<!-- The HTML -->
<div id="content" style="width: 640px; height: 480px;">
<div class="dragable-div"><img class="resizeable-image" style="position:absolute" src="images/glasses.gif" width="200" height="180" /></div>
<div class="dragable-div"><img class="resizeable-image" style="position:absolute" src="images/nordic.gif" width="100" height="100" /></div>
</div>
<!-- The JS wich recognizes the images and sends them into the canvas -->
$('#snap').click(function() {
len = $('#content > div').length;
for(i = 0; i < len; i++){
<!-- One '> div' more because the resize method puts one div around the object -->
ptop = $('#content > div > div').eq(i).offset().top-8;
pleft = $('#content > div > div').eq(i).offset().left - 8;
ih = $('#content > div > div').eq(i).height();
iw = $('#content > div > div').eq(i).width();
img = $('#content > div > div').eq(i).find('img').attr('src');
dIm(img, pleft, ptop, iw, ih);
}
});
function dIm(img_source, posLeft, posTop, imWid, imHei){
base_image = new Image();
base_image.src = img_source;
base_image.onload = function(){
context.drawImage(base_image, posLeft, posTop, imWid, imHei);
}
}
再一次:一切正常;除了图像的来源,它总是获取#content div中的最后一个图像源。
提前致谢!
答案 0 :(得分:2)
您已将base_image
创建为全局变量,因此每次通过该函数都会更新相同的引用。在var
功能中首次使用前添加dIm()
关键字。
function dIm(img_source, posLeft, posTop, imWid, imHei){
var base_image = new Image();
base_image.src = img_source;
base_image.onload = function(){
context.drawImage(base_image, posLeft, posTop, imWid, imHei);
}
}