画布仅每隔单击一次即可更新
Canvas only updates every other click
我正试图通过JavaScript将一个图像绘制到画布对象中,并在单击该图像时动态更改另一个图像的源
function clicked(i){
switch(i){
case(1):
source = document.getElementById("edit_pic").src = "images/1.png";
break;
case(2) :
source = document.getElementById("edit_pic").src = "images/2.png";
break;
case(3) :
source = document.getElementById("edit_pic").src = "images/3.png";
break;
case(4) :
source = document.getElementById("edit_pic").src = "images/4.png";
break;
case(5) :
source = document.getElementById("edit_pic").src = "images/5.png";
break;
}
updateCanvas();
}
function updateCanvas(){
var c=document.getElementById("edit_canvas");
var ctx=c.getContext("2d");
img = document.getElementById("edit_pic");
ctx.drawImage(img,0,0);
}
无论何时单击5个图像中的一个,"edit_pic"图像都会按预期更新,但"edit_canvas"仅在您单击同一图像两次时绘制图片。感谢您的帮助。
这可能是因为在单击函数末尾执行updateCanvas函数时,图像仍在加载。您需要在图像上实现onload回调,并从那里执行updateCanvas函数。换句话说。。。你需要在这个问题上异步:
function clicked(i){
var img = document.getElementById('edit_pic');
img.onload = function(){ updateCanvas(img); };
img.src = 'images/'+ i +'.png';
}
function updateCanvas(img){
var c = document.getElementById("edit_canvas"),
ctx = c.getContext("2d");
ctx.drawImage(img,0,0);
}
相关文章:
- 仅当javascript的新内容出现时,才每3秒更新一次javascript
- 如何更新按钮内部的文本,每行重复一次
- 单击一次以静音,另一次单击可取消静音
- 可点击的三个JS凸对象(点击一次即可显示图像)
- 我怎么能有一个实时计时器,在3秒的循环内每秒钟更新一次
- 网络摄像头图片作为背景每60秒更新一次
- 多久向服务器发送一次Http请求以检查更新?(Ajax)
- 异步mongodb更新循环中最后一次迭代后的重定向
- 仅当图像完全可用时,每秒刷新一次图像
- 使用一次更新对有序列表中的元素重新排序
- 双击时设置内容可编辑 - IE 不允许编辑,除非再单击一次
- 在AngularJS中,一次进行两次调用是一种可接受的方法
- 如何仅在每次单击可滚动(jquery工具)中的导航按钮时加载图像,而不是一次加载所有图像
- 淘汰赛仅更新事件一次
- 使用 Ajax 的表单要么只能使用一次,要么在刷新之前不会更新
- 如何每 n 分钟使用数据更新一次 Web 应用程序
- Spotfire Java脚本将字段拆分为唯一值,并每30秒更新一次MapChart可视化,以反映值的变化
- 画布仅每隔单击一次即可更新
- Ext.grid.EditorGridPanel中的复选框(单击一次可触发编辑后事件)
- Knockoutjs在一次计算中更新多个可观测值