2013-11-21 47 views
0

我的JS文件:如何更改Fabric.js中鼠标悬停的图片来源?

(function() { 
     var canvas = this.__canvas = new fabric.Canvas('c', { 
      hoverCursor: 'pointer', 
      selection: false 
     }); 
     fabric.Object.prototype.transparentCorners = false; 


     canvas.findTarget = (function(originalFn) { 
      return function() { 
       var target = originalFn.apply(this, arguments); 
       if (target) { 
        if (this._hoveredTarget !== target) { 
         canvas.fire('object:over', {target: target}); 
         if (this._hoveredTarget) { 
          canvas.fire('object:out', {target: this._hoveredTarget}); 
         } 
         this._hoveredTarget = target; 
        } 
       } 
       else if (this._hoveredTarget) { 
        canvas.fire('object:out', {target: this._hoveredTarget}); 
        this._hoveredTarget = null; 
       } 
       return target; 
      }; 
     })(canvas.findTarget); 


     canvas.on({ 
      'object:over': function(e) { 
       if (e.target.name === 'Production') { 
        e.target.src = 'Resources/Shape/Production_Hover.svg'; 
        canvas.renderAll.bind(canvas); 
       } 
      } 
     }); 

     canvas.on('object:out', function(e) { 
      e.target.setFill('green'); 
      canvas.renderAll(); 
     }); 
     var shapeImages = [ 
      { 
       name: 'Director', 
       top: 120, 
       left: 545 
      }, 
      { 
       name: 'script', 
       top: 297, 
       left: 575 
      }, 
      { 
       name: 'Production', 
       top: 43, 
       left: 500 
      } 
     ]; 
     function imageDisplay() { 
      var currentImage = shapeImages[0]; 
      fabric.Image.fromURL('Resources/Shape/' + currentImage.name + '.svg', function(img) { 
       img.set({ 
        left: currentImage.left, 
        top: currentImage.top, 
        name: currentImage.name 
       }); 
       img.perPixelTargetFind = true; 
       img.targetFindTolerance = 4; 
       img.hasControls = img.hasBorders = false; 
       img.lockMovementX = img.lockMovementY = true; 
       canvas.add(img); 
      }); 
      shapeImages.shift(); 
      if (typeof shapeImages[0] !== 'undefined') { 
       imageDisplay(); 
      } 
     } 
     imageDisplay(); 
    })(); 

由于fabric.js使用对象的图像,我不能用ID改变它(使用的document.getElementById) ,所以我会很喜欢,如果有人发现什么毛病代码。以上.. 基本上我试图在鼠标悬停上将“Production”的图像更改为“Production_Hover.svg”。

这就是我试图建立: http://www.ismfilms.com/diagram/diagramAS3.swf

我才刚刚起步,直到达到生产的部分..

这是我的索引文件:

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script src="js/fabric.js"></script>   
    </head> 
    <body> 
     <div id="canvas-container"> 
      <canvas id="c" height="700" width="1000"></canvas> 
     </div> 
     <script src="js/flash_conversion.js"></script> 
    </body> 
</html> 
+0

使用onload函数是否有效? –

+0

@kangax老兄..你一定很擅长这个权利? 帮帮我吗? –

回答

相关问题