Search code examples
javascripthtmlkineticjs

Drawing an arc in KineticJS


I know you can draw a wedge using a Kinetic.Wedge:

  var compassArc = new Kinetic.Wedge({
    x: stage.getWidth() / 2,
    y: stage.getHeight() / 2,
    radius: 70,
    angleDeg: 60,
    fill: 'red',
    stroke: 'black',
    strokeWidth: 4,
    rotationDeg: -90
  });

This draws a "pizza slice" with a black outline around the whole thing. I just want the "crust" of the pizza, with no straight lines coming back to the center of the circle. How can I do this?

Setting the fill to null removes the red but leaves the outline.


Solution

  • How about creating a custom shape fot this using arc?

    http://www.html5canvastutorials.com/tutorials/html5-canvas-arcs/

    Please keep in mind that not to close path and not to fill strokes. if so, you will get what you want. It is a KineticJS object, so that you can drag around if you want.

    Here is the working example.

    http://jsfiddle.net/bighostkim/WzxxH/

    var arc = new Kinetic.Shape({
        drawFunc: function(canvas) {
            var context = canvas.getContext();
            var x = stage.getWidth() / 2;
            var y = stage.getHeight()/2;
            var radius = 70;
            var startAngle = 1 * Math.PI;
            var endAngle = 0 * Math.PI;
            var context = canvas.getContext('2d');
            context.beginPath();
            context.arc(x, y, radius, startAngle, endAngle, false);
            //context.closePath();
            canvas.stroke(this);
        },
        fill: '#00D2FF',
        stroke: 'black',
        strokeWidth: 4,
        draggable:true
    });