2012-10-06 15 views
14

Actualmente estoy trabajando en un proyecto que involucra KineticJS.Eliminar objetos de una capa usando KineticJS

Tengo que crear y eliminar formas dinámicamente de forma constante, pero no puedo entender cómo hacer esto último. He estado tratando de hacer:

$ myLayer.remove(myShape) 

porque esto es lo que la mayoría de los mensajes parecen recomendar. Pero, la documentación dice que esto eliminará la capa del escenario y no la forma de la capa. Cuando intento esto en el proyecto, de hecho elimina la capa del escenario.

Entonces, ¿estoy haciendo algo mal o hay alguna otra forma de eliminar una forma de una capa?

+4

No sé si hay una mejor manera, pero después de leer algunos de los códigos JS cinética. Encontré que si hago myShape.remove() la forma se elimina de la capa. – user1724623

+0

gracias! Información útil – tetris11

Respuesta

16

Hay dos funciones que pueden ser útiles.

  • childContainer.remove() elimina el elemento childContainer de su elemento primario.
  • parentContainer.removeChildren() quita todos los niños de este contenedor.

Editar: Esto también se puede aplicar a las formas. Simplemente vuelve a dibujar la capa.

myShape.remove(); 
myLayer.draw(); 
+1

Gracias, ¡solo quería saber esto! descubrió que ni siquiera necesita volver a dibujar la capa, después de llamar eliminar se ha ido inmediatamente. – luschn

+0

¿Cómo restaurarlo de nuevo? –

+0

@MahdiAlkhatib si todavía tiene una referencia a los niños, simplemente agréguelos a la capa/contenedor – BenMQ

2

En algún lugar entre Kinetic 4.0 y la versión más reciente, retire (niño) dejó de funcionar. removeChild (child) tampoco funciona.

Resolví este problema usando child.remove();

0

U puede utilizar el prototipo de la función cinética

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

baselayer.draw();

Cuestiones relacionadas