Heim > Fragen und Antworten > Hauptteil
为什么我把new Image()放在function里面时,图片出不来。
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
</head>
<body onload="init()">
<canvas id="girl"></canvas>
</body>
<script>
var girl = document.getElementById("girl");
var girlWidth = 800;
var girlHeight = 400;
girl.width = girlWidth;
girl.height = girlHeight;
var girlCans = girl.getContext('2d');
function init(){
drawGirl();
}
function drawGirl(){
var girlPic = new Image();
girlPic.src = "img/girl.jpg";
girlCans.drawImage(girlPic,0,0, girlWidth, girlHeight);
}
</script>
</html>
然而我把girlPic设为全局的就能正常显示
<!DOCTYPE html>
<html>
<head>
<meta charset="{CHARSET}">
<title></title>
</head>
<body onload="init()">
<canvas id="girl"></canvas>
</body>
<script>
var girl = document.getElementById("girl");
var girlWidth = 800;
var girlHeight = 400;
girl.width = girlWidth;
girl.height = girlHeight;
var girlCans = girl.getContext('2d');
var girlPic = new Image();
girlPic.src = "img/girl.jpg";
function init(){
drawGirl();
}
function drawGirl(){
girlCans.drawImage(girlPic,0,0, girlWidth, girlHeight);
}
</script>
</html>
怪我咯2017-04-17 13:18:29
因为在image设置完src
后,需要一定的时间进行加载,在src
设置完后马上运行drawImage
函数的时候,image
实际上还什么也没有。
比较合适的写法是image.onload = girlCans.drawImage(girlPic,0,0, girlWidth, girlHeight);