setAngle is not a function fabricjs

南楼画角 提交于 2019-12-11 05:08:09

问题


I recently started to work with fabricjs, and I have a question about connectivity object. i do creating sample demo for connectivity from parent object to child object connect with arrow. I got sample demo http://kpomservices.com/HTML5CanvasCampaign/campaign.html. This code should work with fabric 1.4.2.A similar code is possible for the version 2.3.3 not work.

Error functions.js:963 Uncaught TypeError: c.setAngle is not a function

code

function makeArrow(centerpt, left, top, line) {
    var c = new fabric.Triangle({
        width: 10,
        height: 10,
        left: left,
        top: top,
        //selectable: false,
        strokeWidth: 3,
        fill: 'grey',
        opacity: 1,
        stroke: 'grey',
        originX: 'center',
        originY: 'center'
    });

    c.hasBorders = c.hasControls = false;
    c.angle = 90;
    c.line = line;
    var dx = left - centerpt.x;
    var dy = top - centerpt.y;
    var angle = Math.atan2(dy, dx) * 180 / Math.PI;
    c.setAngle(angle + 90);
    c.setCoords();
    c.name = 'ep';
    line.ep = c;
    c.line = line;
    return c;
}

回答1:


Build doesn't have setter/getter (optional). You can make your build here with Named accessors. If you want to set angle you can use

obj.angle = text;
//or
obj.set({
 angle:angle
});
//or
obj.set('angle', angle);

DEMO

var canvas = new fabric.Canvas('c');
var triangle = new fabric.Triangle({
  left: 150,
  top: 50,
  width: 300,
  height:200,
  fill:'',
  stroke:'red'
})

canvas.add(triangle);
triangle.set('angle',40);
//triangle.angle = 40;
//triangle.set({angle : 40})
canvas{
 border:1px solid #000;
}
<script type="text/javascript" src="
https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas id="c" width="400" height="400"></canvas>


来源:https://stackoverflow.com/questions/51098393/setangle-is-not-a-function-fabricjs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!