2013-04-07 44 views
0

我有一个图像(箭头),显示当用户与画布上的对象进行交互。这个图像(箭头)告诉用户在哪个方向拖动对象。是否可以为图像创建淡入效果?是否可以为显示在画布上的图像创建淡入效果?

下面的代码

var curvedArrow = new Image(); 
    curvedArrow.src = "img/curvedArrow.png"; 
// curvedArrow.onload = function() { 
     context.drawImage(curvedArrow, 15, 45, 35, 30); 
// }; 

注:我叫的drawImage()没有onload事件,作为图像没有在画布上显示出来,如果我内的onload

回答

1

所谓的drawImage设置src.onload监听器,这样它就会启动。

var curvedArrow = new Image(); 
    curvedArrow.addEventListener('load', function() { 
     context.drawImage(curvedArrow, 15, 45, 35, 30); 
    }); 
    curvedArrow.src = "img/curvedArrow.png"; 

然后你可以使用的时间间隔和globalAlpha褪色的图像:

var curvedArrow = new Image(); 
    curvedArrow.addEventListener('load', function() { 
     context.globalAlpha = 0; 
     var imgFadeInter = setInterval(function(){ 
      clearContext(); // a function that clears the canvas 
      context.globalAlpha += 0.01; 
      context.drawImage(curvedArrow, 15, 45, 35, 30); 
      if(context.globalAlpha == 1){ 
       clearInterval(imgFadeInter); 
      } 
     }, 16); // 16ms because jQuery says so   
    }); 
    curvedArrow.src = "img/curvedArrow.png"; 
+0

我试过onload事件后设置的.src,但仍然没有使图像目标负载。关于clearContext()函数,我需要清除画布上的所有内容吗?像context.reset()? – devcoder 2013-04-07 02:02:05

+0

你需要清除每一帧或帧重叠。我建议clearRect – Fresheyeball 2013-04-07 02:13:31

+0

我更新了关于onload问题的答案。在jQuery中,我使用'$(img).on('load',...'并忘记'.onload'不是等价的。 – Fresheyeball 2013-04-08 16:00:30

相关问题