新的Image()画布上的onload或addEventListener不起作用

时间:2017-03-02 10:49:53

标签: javascript canvas

加载本地(或在线)图片时出现问题。所以我使用canvas HTML 5然后我在其上放了一个新图像,但是图像从未在第一时间加载。我需要刷新页面一次。第一次,图像被加载但不及时,所以没有显示。然后,当我刷新时,图像仍然在我的浏览器(firefox 50)的缓存中,以便工作。 我在论坛上看到我需要等待:

myimage.onload = function(){
context.drawImage(myimage,0,0,myimage_size,myimage_size);
}
myimage.src = mysrc;

但是这不起作用,图像没有显示出来。所以我尝试另一种方式:

var elementHTML = document.createElement('img');
    var canvas = document.createElement('canvas');
    canvas.width = my_size;
    canvas.height = my_size;
    elementHTML.appendChild(canvas);
    context = canvas.getContext('2d');
    base_image = new Image();   
    base_image.src = base_image_src;    
    base_image.addEventListener('load', test(this.owner));

    function test(owner){
//here there is the trick, with that, all work but I need program work without that !
        while(window.alert("done")){};
        context.drawImage(base_image,0,0,my_size,my_size)

        if (owner == "1") {
//I modified some colors of my image    
        recolorRGBImage(context,lineTuleColorRGB,playerLineTuleColorRGB_1,lineTrigger);
            recolorRGBImage(context,fillTuleColorRGB,playerFillTuleColorRGB_1,fillTrigger);
        }
        else {
            recolorRGBImage(context,lineTuleColorRGB,playerLineTuleColorRGB_2,lineTrigger);
            recolorRGBImage(context,fillTuleColorRGB,playerFillTuleColorRGB_2,fillTrigger);
        }
    }

这项工作但很明显,警报绝不能显示出来。如何在没有警报的情况下做我做的事情? (警报使用像onload一样因为这些方法不起作用)

谢谢!

0 个答案:

没有答案