javascript - Fabric js 用键盘移动图像

标签 javascript canvas fabricjs keyboard-events

我用 fabric.js 创建了一个简单的工具,我需要添加功能来用键盘移动对象。我被卡住了。目前我登录到控制台的键盘事件,所以我知道它有效。但我不知道如何将此功能添加到我的 Canvas 图像中。需要帮忙吗?

$(function(){
    var canvas = new fabric.Canvas('imageCanvas', {
        backgroundColor: 'rgba(255, 255, 255, 0)'
    });
    var imageLoader = document.getElementById('imageLoader');
    imageLoader.addEventListener('change', handleImage, false);

    function handleImage(e) {
        var reader = new FileReader();
        reader.onload = function (event) {
            var img = new Image();
            img.onload = function () {
                var imgInstance = new fabric.Image(img, {

                })
                canvas.add(imgInstance);
            }
            img.src = event.target.result;

        }
        reader.readAsDataURL(e.target.files[0]);
    }

    canvas.on('mouse:down', function(options) {
      console.log(options.e.clientX, options.e.clientY);
    });

    var canvasWrapper = document.getElementById('canvasWrapper');
    canvasWrapper.tabIndex = 1000;
    canvasWrapper.addEventListener("keydown", doKeyDown, false);

    function doKeyDown(e) {
        document.onkeydown = function(e) {
            switch (e.keyCode) {
                case 38:  /* Up arrow was pressed */
                    console.log('up works')
                  break;
                case 40:  /* Down arrow was pressed */
                    console.log('down works')
                  break;
                case 37:  /* Left arrow was pressed */
                    console.log('left works')
                  break;
                case 39:  /* Right arrow was pressed */
                   console.log('right works')
                  break;
              }
        }
    }

    var imageSaver = document.getElementById('imageSaver');
    imageSaver.addEventListener('click', imageBorder, false);
    imageSaver.addEventListener('click', saveImage, false);

    function imageBorder(e) {
        canvas.item(0).hasControls = canvas.item(0).hasBorders = false;
    }

    function saveImage(e) {
        this.href = canvas.toDataURL({
            format: 'png',
            quality: 1
        });
        this.download = 'test.png'
        if(saveImage) {
            location.reload();
        }else {
            alert('somtehing went wrong')
        }
    }

});

最佳答案

以案例 39 为例:

canvas.getActiveObject().left += 5;

然后也许是 canvas.renderAll()

关于javascript - Fabric js 用键盘移动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24733030/

相关文章:

javascript - Knockout js 隐藏了我的 html 代码

javascript - 如何设置可编辑 div 的初始值?

javascript - clearRect() 在 html5 Canvas 中不起作用

javascript - 为什么这个 random() 分布看起来不对称?

javascript - 如何将文本框弹出窗口(Jquery 工具提示或类似的)添加到 Canvas 中的 Fabric JS 图像?

javascript - Angularjs 和 Jquery datepicker 数据绑定(bind)

Javascript onclick 附件索引器问题

javascript - 通过离开 Canvas 来突出显示页面?

javascript - Fabricjs 检测鼠标悬停在对象路径上

javascript - Fabric.js 直接从 JSON 到 PNG