使用fabricjs将更改的镜像对象设置为先前的状态

时间:2014-03-07 09:03:42

标签: fabricjs

使用fabricjs项目。我正在尝试在画布上制作所选i-text对象的左镜像。左边的镜子工作正常,但是当托盘将镜像对象设置为先前的状态时出现位置和对象选择问题。再次将对象置于先前状态后,我试图将该对象设置为左镜像,这不起作用我的情况。

这是我的剧本

    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

1 个答案:

答案 0 :(得分: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**