14

I am currently working a project involving KineticJS.

I have to dynamically create and delete shapes constantly, but cannot seem to figure out how to do the latter. I've been trying to do:

 $ myLayer.remove(myShape)

because this is what most posts seem to recommend. But, the documentation says that this will remove the layer from the stage and not the shape from the layer. When I try this in project it in fact removes the layer from the stage.

So am I doing something wrong or is there some other way to remove a shape from a layer?

Furqan Safdar
  • 16,260
  • 13
  • 59
  • 93
user1724623
  • 141
  • 1
  • 1
  • 3
  • 4
    I don't know if there is a better way, but after reading some of the kinetic js code. I found if I do myShape.remove() the shape gets removed from the layer. – user1724623 Oct 06 '12 at 06:41

3 Answers3

17

There are two functions that may be helpful.

  • childContainer.remove() removes the childContainer from it's parent.
  • parentContainer.removeChildren() removes all the children from this container.

Edit: This can also apply to shapes. Simply redraw the layer.

myShape.remove();
myLayer.draw();
BenMQ
  • 866
  • 1
  • 10
  • 26
2

Somewhere between Kinetic 4.0 and the latest version, remove(child) stopped working. removeChild(child) doesn't work either.

I resolved this problem by using child.remove();

Adam Augusta
  • 444
  • 4
  • 9
0

U can use the prototype of kinetic function

Kinetic.Node.prototype.remove.call(removed_object);

baselayer.draw();

Manjunath Raddi
  • 421
  • 6
  • 15