画布图像故障
Canvas Image trouble
我在JavaScript和Canvas方面遇到问题,尤其是在Firefox中。我正在尝试创建一个画布图像查看器,它将在浏览器中启用画布来代替标准img标记时运行。单击箭头时,Javascript会更改src路径数组中的图像。出于某种原因,Firefox总是有一个img不同步。当我在chrome中测试它时,img是同步的,但第一个没有显示。
这是图像对象
var image = new Image();
image.src = myImage.src[0];
这是我最初的画布初始化
if(canvas()){ //canvas stuff
var myc = document.createElement('canvas');
myc.id='mycanvasx';
mycanvas = document.getElementById('mycanvasx');
myc.width = image.width;
myc.height = image.height;
//viewer.replaceChild(myc, scroller);
viewer.appendChild(myc);
var context = myc.getContext("2d");
dw = image.width;
dh = image.height;
context.clearRect(0, 0, myc.width, myc.height);
context.drawImage(image, 0, 0, dw, dh);
}
当按下箭头时,这样的功能被称为
function update(){
if(canvas()){
context.clearRect(0,0,myc.width, myc.height) //maybe bloat
myc.width = image.width;
myc.height = image.height;
dw = image.width;
dh = image.height;
context.drawImage(image, 0, 0, dw, dh);
}
}
function left(){ //these move the image through the source array
if(myImage.num > 0){myImage.num--;}else{
myImage.num = (myImage.src.length-1)}
image.src = myImage.src[myImage.num];
scroller.src = image.src;
update();
x=0;
}
我知道我一定错过了一些简单的东西。我使用的是firefox 4.0.1和chrome 11
您正在设置图像的src,然后立即将其绘制到画布中。但是图像加载是异步的。因此,您在加载新的src之前绘制它;由于您一直在重复使用同一个图像,因此此时它仍然显示以前的图像。
您希望在image
上的onload侦听器上运行update()
。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使图像在单击时展开到不大于浏览器
- Html页面上的多个Base64图像和平滑加载
- UIAutomation放大图像
- 使用javascript在Flash中加载外部图像
- 添加图像会导致光滑的轮播出现故障
- 冲突的脚本:当我将fancyBox脚本添加到html文档时,图像滑块出现故障
- 悬停以切换图像故障
- 放大镜javascript与图像查看器一起使用时出现故障
- 当点击图像周围的空白空间时,Javascript幻灯片显示故障
- 画布图像故障
- 创建不会在图像更改时出现故障的滑动图像库