Javascript Fabric js在加载Fabric.image.fromURL后旋转图像

Javascript Fabric js在加载Fabric.image.fromURL后旋转图像,javascript,html5-canvas,fabricjs,Javascript,Html5 Canvas,Fabricjs,我使用fabrics.image.fromURL加载了一个图像 fabric.Image.fromURL($scope.image, function(oImg) { oImg.set({width: $scope.imageWidth, height: $scope.imageHeight, originX: 'left', originY: 'top', selectable: false}); ca

我使用fabrics.image.fromURL加载了一个图像

 fabric.Image.fromURL($scope.image, function(oImg)
            {
                oImg.set({width: $scope.imageWidth, height: $scope.imageHeight, originX:  'left', originY: 'top', selectable: false});
                canvas.add(oImg);
                canvas.centerObject(oImg);
                canvas.renderAll();
                oImg.sendToBack();
            });
我现在想做的是我在页面上有一个旋转按钮,他们可以在那里旋转这个图像。但是,在图像对象已经加载之后,我无法修改它。我试过:

 oImg.rotate(90) 

但是oImg现在还没有定义。有人在这方面运气好吗?

首先,我建议使用.setAngle方法,而不是.rotate方法

但是你的问题的根源是你如何瞄准那个特定的目标

oImg变量被本地化为在画布上创建对象的函数。因此,只需将oImg设置为全局变量,就可以通过变量名将该对象作为目标

var rotateThisImage;  /* Set this on a global scope outside of a function */
...
rotateThisImage = oImg;  /* Set oImg to your new global variable */
...
rotateThisImage.setAngle(curAngle+15);  /* Elsewhere in your code, on button click, set angle */
以下是一个例子:

另一种方法是仅旋转画布上的活动对象。但是,要使其工作,对象需要是可选择的,并且必须删除可选:false属性

canvas._activeObject
Canvas是Canvas本身的变量名,_activeObject是在Canvas上选择的任何对象

canvas.item(0)
下面是一个例子-请注意,在对象旋转之前,必须先选择对象。

另一种允许您保持可选性的方法:false属性是通过画布上的对象id选择对象

canvas.item(0)
项目0是画布上的第一个项目,在分层顺序中是最低的。如果画布上有5个对象,则最顶端的对象将是项4,因为索引从0开始

以下是此方法的一个示例:

谢谢,我实际上设置了rotateThisImage=oImg,这样我就可以在另一个函数中访问rotateThisImage JS Fiddle有一个错误:
rotateThisImage.getAngle不是函数
Fiddle已经更新。自4年前发布以来,FabricJS库似乎发生了很大的变化
getAngle()
setAngle()
似乎已被替换为仅
angle