2014-03-07 31 views
0

正在使用fabricjs项目。在此我试图在画布上制作所选i-text对象的左侧镜像。镜子左侧工作正常,但后托盘将镜像对象设置为以前的状态获取位置和对象选择的问题。获得对象在以前的状态再次我试图使该对象左侧镜像,这不工作我的情况。使用fabricjs将已更改的镜像对象设置为之前的状态

这里是我的脚本

var canvas = new fabric.Canvas('c'); 
var text = new fabric.IText('Sample', { 
    left: 100, 
    top: 100, 
    fill: 'red' 
}); 
canvas.add(text); 


var mirror_left=0; 

document.getElementById('clone_left').addEventListener('click', function (e) { 
var obj = canvas.getActiveObject(); 
    var top = canvas.getActiveObject().get('top'); 
      var left = canvas.getActiveObject().get('left'); 


    if(obj.type=='i-text') 
    { 
     if(mirror_left ==0) 
     { 
      alert("setting mirror left"); 
      alert(top); alert(left); 

     //var top = obj.get('top'); 
      // var left = obj.get('left'); 
      obj.set({ 
       top:top, 
       left:left, 
      flipY:true, 
       //flipX:true, 
       angle:180 
       }); 
      canvas.renderAll(); 
      mirror_left++; 
      exit; 
     } 
      if(mirror_left==1) 
     { 
      alert("setting default"); 
     // top=top -50; 
      alert(top); alert(left); 
     // var top = obj.get('top'); 
      // var left = obj.get('left'); 
      obj.set({ 
       top:top, 
       left:left, 
       flipY:false, 
       flipX:false, 
       angle:0 
      }); 
      canvas.renderAll(); 
      mirror_left=0; 


     } 

    } 
}); 

Click here for fiddle demo

回答

0

Fiddle Demo

//Html code 
    <canvas id="c" height="400" width="500" style=" border:1px solid gray;"> 
    </canvas> 
    <button id="clone_left" name="left">left</button> 
    <button id="clone_right" name="right">right</button> 
    <button id="clone_top" name="top">top</button> 
    <button id="clone_bottom" name="bottom">bottom</button>  

//Html code end 

    // **java script start** 

      //Using i-text 
      var mirror_left=0; 
      var mirror_top=0; 
      var mirror_left_path=0; 
      var mirror_top_path=0; 
      var mirror_left_image=0; 
      var mirror_top_image=0; 


      document.getElementById('clone_left').addEventListener('click', function (e) { 
      var obj = canvas.getActiveObject(); 

       if(obj.type=='i-text') 
       { 
        if(mirror_left ==0) 
        { 
         //alert("if 0 left"); 

        var top = obj.get('top'); 
        var flipy=obj.set('flipX', true); 

        obj.set(
          'top', top + 0, 
          'angle',180 , 
          'flipX','true' 

         ); 
         canvas.renderAll(); 
         mirror_left++; 
         exit; 
        } 
         if(mirror_left==1) 
        { 
         //alert("if 1 left"); 

        var top = obj.get('top'); 
         var left = obj.get('left'); 
         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 

        obj.set(
          'top', top + 0, 
          'angle',0 , 
          'flipX','false', 
           'flipY','false' 

         ); 

         canvas.renderAll(); 
         mirror_left=0; 


        } 

       } 

       //path left 
       if(obj.type=='path' || obj.type=='path-group') 
       { //alert("path"); 
        if(mirror_left_path==0) 
        { 
         //alert("if 0 left"); 

        var top = obj.get('top'); 
        var flipy=obj.set('flipX', true); 

        obj.set(
          'top', top + 0, 
          'angle',180 , 
          'flipX','true' 


         ); 
         canvas.renderAll(); 
         mirror_left_path++; 
         exit; 
        } 
         if(mirror_left_path==1) 
        { 
         //alert("if 1 left"); 

        var top = obj.get('top'); 
         var left = obj.get('left'); 
         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 

        obj.set(
          'top', top + 0, 
          'angle',0 , 
          'flipX','false', 
           'flipY','false' 

         ); 

         canvas.renderAll(); 
         mirror_left_path=0; 


        } 

       } 

       //non svg image left 
       if(obj.type=='image') 
       { //alert("path"); 
        if(mirror_left_image==0) 
        { 
         //alert("if 0 left"); 

        var top = obj.get('top'); 
        var flipy=obj.set('flipX', true); 

        obj.set(
          'top', top + 0, 
          'angle',180 , 
          'flipX','true' 


         ); 
         canvas.renderAll(); 
         mirror_left_image++; 
         exit; 
        } 
         if(mirror_left_image==1) 
        { 
         //alert("if 1 left"); 

        var top = obj.get('top'); 
         var left = obj.get('left'); 
         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 

        obj.set(
          'top', top + 0, 
          'angle',0 , 
          'flipX','false', 
           'flipY','false' 

         ); 

         canvas.renderAll(); 
         mirror_left_image=0; 


        } 

       } 


      }); 

      document.getElementById('clone_right').addEventListener('click', function (e) { 
      var obj = canvas.getActiveObject(); 

       if(obj.type=='i-text') 
       { 
        var left = obj.get('left'); 
        if(mirror_left ==0) 
        { 
         // alert("if 0 left"); 

        var top = obj.get('top'); 
        var flipy=obj.set('flipX', true); 

        obj.set(
          'top', top + 0, 
          'angle',180 , 
          'flipX','true', 
           'left',left + 2 

         ); 
         canvas.renderAll(); 
         mirror_left++; 
         exit; 
        } 
         if(mirror_left==1) 
        { 
         // alert("if 1 left"); 

        var top = obj.get('top'); 
         var left = obj.get('left'); 
         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 

        obj.set(
          'top', top + 0, 
          'angle',0 , 
          'flipX','false', 
           'flipY','false', 
           'left',left + 2 

         ); 

         canvas.renderAll(); 
         mirror_left=0; 


        } 

       } 

       //path right 
      if(obj.type=='path' || obj.type=='path-group') 
       { //alert("path"); 
        if(mirror_left_path==0) 
        { 
         //alert("if 0 left"); 

        var top = obj.get('top'); 
        var flipy=obj.set('flipX', true); 

        obj.set(
          'top', top + 0, 
          'angle',180 , 
          'flipX','true' 


         ); 
         canvas.renderAll(); 
         mirror_left_path++; 
         exit; 
        } 
         if(mirror_left_path==1) 
        { 
         //alert("if 1 left"); 

        var top = obj.get('top'); 
         var left = obj.get('left'); 
         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 

        obj.set(
          'top', top + 0, 
          'angle',0 , 
          'flipX','false', 
           'flipY','false' 

         ); 

         canvas.renderAll(); 
         mirror_left_path=0; 


        } 

       } 

       //non svg image left 
       if(obj.type=='image') 
       { //alert("path"); 
        if(mirror_left_image==0) 
        { 
         //alert("if 0 left"); 

        var top = obj.get('top'); 
        var flipy=obj.set('flipX', true); 

        obj.set(
          'top', top + 0, 
          'angle',180 , 
          'flipX','true' 


         ); 
         canvas.renderAll(); 
         mirror_left_image++; 
         exit; 
        } 
         if(mirror_left_image==1) 
        { 
         //alert("if 1 left"); 

        var top = obj.get('top'); 
         var left = obj.get('left'); 
         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 

        obj.set(
          'top', top + 0, 
          'angle',0 , 
          'flipX','false', 
           'flipY','false' 

         ); 

         canvas.renderAll(); 
         mirror_left_image=0; 


        } 

       } 
      }); 

      document.getElementById('clone_top').addEventListener('click', function (e) { 
      var obj = canvas.getActiveObject(); 

       if(obj.type=='i-text') 
       { 
        if(mirror_top==0) 
        { 
         // alert("if 0 left"); 
         var top = obj.get('top'); 
        var flipx=obj.set('flipY', true); 
         obj.set(
          'top', top + 0, 
          'angle', 90, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top++; 
         exit; 

        } if(mirror_top==1) { 
          //alert("if 1 left"); 
         //var clone = obj.clone(); 
         var top = obj.get('top'); 

         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 
         obj.set(
          'top', top + 0, 
          'angle', 0, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top=0; 

        } 

       } 
       //path top 
      if(obj.type=='path' || obj.type=='path-group') 
       { //alert("path"); 
        if(mirror_top_path==0) 
        { 
         //alert("if 0 left"); 
         var top = obj.get('top'); 
        var flipx=obj.set('flipY', true); 
         obj.set(
          'top', top + 0, 
          'angle', 90, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_path++; 
         exit; 

        } 
        if(mirror_top_path==1) { 
          //alert("if 1 left"); 
         // var clone = obj.clone(); 
         var top = obj.get('top'); 

         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 
         obj.set(
          'top', top + 0, 
          'angle', 0, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_path=0; 

        } 

       } 

       //non svg image top 
      if(obj.type=='image') 
       { //alert("path"); 
        if(mirror_top_image==0) 
        { 
         //alert("if 0 left"); 
         var top = obj.get('top'); 
        var flipx=obj.set('flipY', true); 
         obj.set(
          'top', top + 0, 
          'angle', 90, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_image++; 
         exit; 

        } 
        if(mirror_top_image==1) { 
          //alert("if 1 left"); 
         // var clone = obj.clone(); 
         var top = obj.get('top'); 

         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 
         obj.set(
          'top', top + 0, 
          'angle', 0, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_image=0; 

        } 

       } 
      }); 

      document.getElementById('clone_bottom').addEventListener('click', function (e) { 

      var obj = canvas.getActiveObject(); 
       if(obj.type=='i-text') 
       { 
        if(mirror_top==0) 
        { 
         //alert("if 0 left"); 
         var top = obj.get('top'); 
        var flipx=obj.set('flipY', true); 
         obj.set(
          'top', top + 0, 
          'angle', 90, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top++; 
         exit; 

        } if(mirror_top==1) { 
         // alert("if 1 left"); 
         // var clone = obj.clone(); 
         var top = obj.get('top'); 

         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 
         obj.set(
          'top', top + 0, 
          'angle', 0, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top=0; 

        } 

       } 

       //path bottom 
      if(obj.type=='path' || obj.type=='path-group') 
       { 
      // alert("path"); 
        if(mirror_top_path==0) 
        { 
         // alert("if 0 left"); 
         var top = obj.get('top'); 
        var flipx=obj.set('flipY', true); 
         obj.set(
          'top', top + 0, 
          'angle', 90, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_path++; 
         exit; 

        } if(mirror_top_path==1) { 
         // alert("if 1 left"); 
         // var clone = obj.clone(); 
         var top = obj.get('top'); 

         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 
         obj.set(
          'top', top + 0, 
          'angle', 0, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_path=0; 

        } 

       } 
       //non svg image bottom 
      if(obj.type=='image') 
       { //alert("path"); 
        if(mirror_top_image==0) 
        { 
         //alert("if 0 left"); 
         var top = obj.get('top'); 
        var flipx=obj.set('flipY', true); 
         obj.set(
          'top', top + 0, 
          'angle', 90, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_image++; 
         exit; 

        } 
        if(mirror_top_image==1) { 
          //alert("if 1 left"); 
         // var clone = obj.clone(); 
         var top = obj.get('top'); 

         var flipy=obj.set('flipX', false); 
         var flipx=obj.set('flipY', false); 
         obj.set(
          'top', top + 0, 
          'angle', 0, 
          'flipY','true'    
         ); 
         canvas.renderAll(); 
         mirror_top_image=0; 

        } 

       } 
      }); 

    // **Fabric srcipt end** 
相关问题