Javascript 画布仅在多次调用和刷新后工作

Javascript 画布仅在多次调用和刷新后工作,javascript,jquery,html,performance,html5-canvas,Javascript,Jquery,Html,Performance,Html5 Canvas,我正在使用html5画布,但它不能正常工作 <section class="row" style="margin: 0px auto;"> <canvas id="a" width=1000 height=350></canvas> <canvas id="b" width=1000 height=350></canvas> <canvas id="c" width=1000 height=350></ca

我正在使用html5画布,但它不能正常工作

<section class="row" style="margin: 0px auto;">
  <canvas id="a" width=1000 height=350></canvas>
  <canvas id="b" width=1000 height=350></canvas>
  <canvas id="c" width=1000 height=350></canvas>
  <canvas id="d" width=1000 height=350></canvas>
  <canvas id="e" width=1000 height=350></canvas>
  <canvas id="f" width=1000 height=350></canvas>
  <canvas id="g" width=1000 height=350></canvas>
  <canvas id="h" width=1000 height=350></canvas>
  <canvas id="i" width=1000 height=350></canvas>
<img src="original.png" class="ogimg" id="ogimg"/> 
<img src="shadow.png" class="high" id="high"/> 
<img src="bulldozer-mocha.png" name="bulldozer-mocha.png" onclick="drw(this)">
<img src="bulldozer.png" name="bulldozer.png" onclick="drw_cushion(this)">
<img src="mocha.png" name="mocha.png" onclick="drw_cushions(this)">
</section>

完整代码在这里

代码可以完全工作,但需要2到3页刷新

请帮我找出错误

以下是一些让您开始学习的代码:

var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var c=document.createElement(“画布”);
var cctx=c.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
//图像加载器:将图像路径放入ImageURL[]
var-imageurl=[];
imageURLs.push(“https://dl.dropboxusercontent.com/u/139992952/multple/sofa.png");
imageURLs.push(“https://dl.dropboxusercontent.com/u/139992952/multple/texture1.png");
imageURLs.push(“https://dl.dropboxusercontent.com/u/139992952/multple/texture2.png");
imageURLs.push(“https://dl.dropboxusercontent.com/u/139992952/multple/texture3.png");
var-imgs=[];
var-imagesOK=0;
预处理图像(开始);
var sofaParts=[];
var sofa={
x:0,,
y:0,
img:null,
纹理索引:0,
}
推(沙发);
var texturePatterns=[];
函数预加载映像(回调){
对于(var i=0;i=imageURLs.length){
回调();
}
};
img.onerror=函数(){
警报(“图像加载失败”);
}
img.src=imageURL[i];
}
}
函数start(){
sofa.img=imgs[0];
对于(变量i=1;i
#画布{
边框:1px纯红;
保证金:0自动;
}

单击沙发的纹理。

什么工作不正常?你试图做什么,发生了什么/没有发生什么?我们需要比“不工作”更多的信息,因为这是主观的,可能意味着任何事情。需要多次单击和页面刷新才能开始工作功能正在工作,并通过警报消息进行检查,但需要双击在画布上绘制图像。每个画布首先应该做什么?预期的行为是什么?您没有提供足够的信息供任何人提供答案。在尝试绘制图像之前,您没有给图像加载时间。您必须通过设置image.onload回调为图像提供加载时间。查看此帖子:。您可能希望在应用程序开始时预装所有图像,以便它们在需要时可用。看看这篇文章:多亏了大家,我实现了加载的方式,通过调用函数两次,继续前进。