【发布时间】:2023-03-12 00:25:01
【问题描述】:
我正在尝试根据对象数组获取不同的图像来源。
如果一个人是男性,它应该显示 men.png。
如果一个人是女性,它应该显示 female.png。
问题是我在画布中只得到了 female.png。
另一个问题是我的回调函数没有按循环变量的顺序调用。
这里是代码。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
<canvas id ="canvas3" width="1100" height="100" ></canvas>
</div>
<script>
var person = [{name:" Mr.Ram T",gender:"Male"}, {name:" Dr.Shila G", gender:"Female"}, {name: " Dr. J Phil", gender:"Male" } , {name:" Mrs. Sita W",gender:"Female"}, {name:" Mrs. Gita W",gender:"Female"}, {name:" Mrs. Rita W",gender:"Female"}];
function myCallBack(ilocal)
{
return function()
{ alert(ilocal);
ctx.drawImage(img, 10+ilocal*180, 5, 20, 20);
};
}
for (i=0;i<6;i++)
{
var canvas = document.getElementById('canvas3');
var ctx = canvas.getContext('2d');
var img = new Image();
if( person[i].gender == "Male")
{
img.src = "men.png";
}
else
{
img.src = "female.png";
}
if ( img.complete )
{
ctx.drawImage(img, 10+i*180, 5, 20, 20);
}
else
{
img.onload = myCallBack(i);
}
}
</script>
</body>
</html>
【问题讨论】:
-
一个链接到 jsfiddle 将是伟大的伙伴.. :)
标签: javascript html canvas callback drawimage