geeky_monster
geeky_monster

Reputation: 8792

Issue with Mouseover event in KineticJS

I am trying to do a bit of experimentation with KinetiJs Canvas library. What I have done below is - Draw a Rectangle, and whenever there is a mouseover I want a line to be drawn between specific points.

The problem is, I do not see any line when a mouseover happens.

I have tried checking if the onmousemove function gets called or not and it does get called, but the line doesn't get drawn. Can anyone please explain why?

$(document).ready(function () {
    var stage = new Kinetic.Stage({
        container: "sketchcanvas",
        width: 600,
        height: 600
    });
    var layer = new Kinetic.Layer();
    var rect = new Kinetic.Rect({
        x: 50,
        y: 50,
        width: 500,
        height: 500,
        fill: "#00D2FF",
        stroke: "black",
        strokeWidth: 4
    });
    rect.on("mousemove", function () {
        var mousePos = stage.getMousePosition();
        var x = mousePos.x;
        var y = mousePos.y;
        var line = new Kinetic.Line({
            points: [60, 60, 80, 80, 100, 200],
            stroke: "black",
            strokeWidth: 15,
            lineCap: 'round',
            lineJoin: 'round'
        });
        layer.add(line);
    });
    layer.add(rect);
    stage.add(layer);
});

Upvotes: 2

Views: 1308

Answers (1)

Joseph
Joseph

Reputation: 119847

In KineticJS, after you make alterations or additions to a layer, you need to draw() to the layer for effects to show

...
layer.add(line);
layer.draw();

Upvotes: 2

Related Questions