2012-10-06 7 views
14

Obecnie pracuję nad projektem obejmującym KineticJS.Usuwanie obiektów z warstwy przy użyciu KineticJS

Muszę dynamicznie tworzyć i usuwać kształty w sposób ciągły, ale nie mogę wymyślić, jak to zrobić. Próbowałem zrobić:

$ myLayer.remove(myShape) 

, ponieważ tak właśnie polecają większość postów. Ale dokumentacja mówi, że to usunie warstwę ze sceny, a nie kształt z warstwy. Kiedy próbuję tego w projekcie, faktycznie usuwa warstwę ze sceny.

Czy robię coś złego, czy jest jakiś inny sposób na usunięcie kształtu z warstwy?

+4

ja nie wiem, czy istnieje lepszy sposób, ale po przeczytaniu niektórych kinetycznej kodu JS. Znalazłem, jeśli zrobię myShape.remove() kształt zostanie usunięty z warstwy. – user1724623

+0

dzięki! przydatne informacje – tetris11

Odpowiedz

16

Dostępne są dwie funkcje, które mogą być pomocne.

  • childContainer.remove() usuwa childContainer z jego rodzica.
  • parentContainer.removeChildren() usuwa wszystkie dzieci z tego pojemnika.

Edytuj: Może to również dotyczyć kształtów. Po prostu przerysuj warstwę.

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

thanx, chciałem to wiedzieć! okazało się, że nie musisz nawet przerysowywać warstwy, po wywołaniu usuń natychmiast zniknął. – luschn

+0

Jak przywrócić go ponownie? –

+0

@MahdiAlkhatib, jeśli nadal masz odniesienie do dzieci, a następnie po prostu dodaj je do warstwy/pojemnika – BenMQ

2

Gdzieś pomiędzy Kinetic 4.0 i najnowszą wersją, remove (child) przestał działać. removeChild (child) też nie działa.

Rozwiązałem ten problem, używając child.remove();

0

U można używać prototyp funkcji kinetycznej

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

baselayer.draw();