2016-07-11 8 views
0

Ich erstelle eine benutzerdefinierte Klasse, die Textbox erweitert, und es muss Y Skalierung aktiviert haben. Die y-Skalierung muss dasselbe Verhalten wie die x-Skalierung haben, um nur die Elementbreite/-höhe und nicht die fontSize zu ändern.Textfeld aktivieren scaleY

Aber ich habe bereits den gesamten Textbox-Code überprüft und kann nicht finden, was überschrieben werden muss, um dieses Verhalten zu haben.

Hier einige Code ist, was ich tue:

https://fiddle.jshell.net/filiperoberto/zLz6cy2L/3/

Antwort

0

ich eine Funktion bei textbox_behavior.mixin.js in fabricjs gefunden, die Textbox Skala Verhalten ändert, erweiterte ich diese Funktion auf meinem benutzerdefinierten Element das erwartete Verhalten haben.

* noch einige Arbeit braucht

(function(){ 
    var setObjectScaleOverridden = fabric.Canvas.prototype._setObjectScale; 

    fabric.Canvas.prototype._setObjectScale = function(localMouse, transform,lockScalingX, lockScalingY, by, lockScalingFlip, _dim) { 

     var t = transform.target; 
     if (t instanceof fabric.FeedText) { 
      var w = t.width * ((localMouse.x/transform.scaleX)/(t.width + t.strokeWidth)); 
      var h = t.height * ((localMouse.y/transform.scaleY)/(t.height + t.strokeWidth)); 
      if (w >= t.getMinWidth() && h >= t.minHeight) { 
       t.set('width', w); 
       t.set('height',h); 
       return true; 
      } 
     } 
     else { 
      return setObjectScaleOverridden.call(fabric.Canvas.prototype, localMouse, transform, 
       lockScalingX, lockScalingY, by, lockScalingFlip, _dim); 
     } 
    }; 
})();