2011-11-06 5 views
1

나는 응용 프로그램 캔버스를 만듭니다. draw() 함수를 호출 할 때마다 캔버스에 여러 개의 이미지가 그려집니다. 문제는 Opera에서 작동하지 않는다는 것입니다. 온로드 기능이 항상 작동하는 것은 아닙니다.오페라가있는 onload() 캔버스 관련 문제

function draw(){ 
    ctx.clearRect (0, 0, canvas.width, canvas.height); 
    var img = new Image(); 
    img.src = srcvolets; 
    img.onload = function(){ 
     ctx.drawImage(img, 0, 0,canvas.width,canvas.height); 
     if(srccouleur!=null){ 
      var img2 = new Image(); 
      img2.src = 'images/couleurs/'+volets+'/'+srccouleur+'.png'; 
      img2.onload = function(){ 
       ctx.drawImage(img2, 0, 0,canvas.width,canvas.height); 
       if(srcsculpture!=null){ 
        var img3 = new Image(); 
        img3.src = cheminsculpt+srcsculpture; 
        img3.onload = function(){ 
         if(volets=='furno'){ 
          ctx.drawImage(img3, 175, 235); 
         }else{ 
          ctx.drawImage(img3, 175, 242); 
         }       
        } 
       } 
}}}} 

감사합니다. (내 영어로는 미안 해요, 나는 프랑스어로 말합니다)

답변

2

이것은 이미지가 캐싱되는 것과 관련이 있다고 생각하며, 설정되기 전에 onload이 실행됩니다.

src을 설정하기 전에 onload을 설정해야 할 수도 있습니다. this article about the problem을 참조하십시오.

+0

[이 질문에] (http://stackoverflow.com/questions/4776670/should-setting-an-image-src-to-dataurl-be-available- 즉시), 당신은 반드시 onload '이 문제를 피하기 위해'src '앞에 (그리고 IE9에서는 또 하나). – Phrogz