【问题标题】:Fabricjs Setting button to toggle lock on movement x axisFabricjs 设置按钮以在移动 x 轴上切换锁定
【发布时间】:2019-08-16 15:21:13
【问题描述】:

我正在fabricjs画布中制作图像处理工具,我需要添加一些在Y轴上移动的位置固定矩形,但同时允许用户在必要时在x轴上移动它们,

上述矩形在被召唤时具有以下属性:

// creates a rectangle object for text1
var rect = new fabric.Rect({
    fill: 'rgba(0, 16, 8, 0.45)',
    left: 150,
    top: 200,
    width: 700,
    height: 120,
    centeredScaling: true,
    lockMovementX: true,
    stroke: 'rgba(0, 0, 0, 0.10)',
    strokeWidth: 0.1,
});

// adds rectangle onto canvas
canvas.add(rect);

这可以通过添加一个复选框并在真假状态之间切换来完成,就像在这个演示中一样:

http://fabricjs.com/controls-customization

使用 fabric js 文档中的以下变量:

LockMovementX :布尔值 当true时,对象水平移动被锁定

这些参考对这个目标也很有用:

http://fabricjs.com/customization

https://github.com/fabricjs/fabric.js/wiki/Preventing-object-modification-(movement)

http://fabricjs.com/docs/fabric.Object.html#lockMovementX

但到目前为止,我还没有为这个变量找到一个正常工作的切换按钮,有人可以帮我解决这个问题吗?

这是一个带有我的代码示例的 js.fiddle:https://jsfiddle.net/Cuernacow/d1jve8w9/

【问题讨论】:

    标签: fabricjs


    【解决方案1】:

    我想出了如何正确设置:

    在 HTML 代码中:

    <p>hasControls</p>
    <input type="checkbox" id="hasControls" checked="">
    <p>Visible</p>
    <input type="checkbox" id="visible" checked="">
    <p>Lock x axis</p>
    <input type="checkbox" id="lockMovementX" checked="">
    <p>Lock y axis</p>
    <input type="checkbox" id="lockMovementY" checked="">
    

    在fabric js代码中:

    //-------- Observe checkbox boolean value
    //Each Id property in the html is used as an boolean property by fabric js 
    //getActiveObject() selects the current active object in the canvas to apply such  property
    
    function observeBoolean(property) {
    document.getElementById(property).onclick = function() {
      canvas.getActiveObject()[property] = this.checked;
      canvas.renderAll();
    };
      }
    
      //-------- Declaration of boolean variables to observe
    
      observeBoolean('hasControls');
      observeBoolean('visible');
      observeBoolean('lockMovementX');
      observeBoolean('lockMovementY');
    

    还有更新的 jsfiddle:https://jsfiddle.net/Cuernacow/d1jve8w9/18/

    【讨论】:

    • 你能修改你的小提琴以在按下 ALT 键时锁定 X 或 Y 移动吗?
    • 这里,更新它以在按下 ALT 时切换 X 和 Y 的点击事件jsfiddle.net/Cuernacow/d1jve8w9/83
    • 我添加了一个函数,命名为该函数要调用的复选框:document.onkeydown = function(e) { if (18 === e.keyCode) { // 18 is Alt key $('input[name=LockMovementX]').trigger('click'); // Triggers a click on LockMovementX $('input[name=LockMovementY]').trigger('click'); // Triggers a click on LockMovementY }} 您可以通过替换本网站中提到的键代码来更改按钮:css-tricks.com/snippets/javascript/javascript-keycodes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多