2012-10-06 38 views
14

Tôi hiện đang làm việc với một dự án liên quan đến KineticJS.Loại bỏ các đối tượng khỏi một lớp bằng KineticJS

Tôi phải tự động tạo và xóa các hình dạng liên tục, nhưng dường như không thể tìm ra cách để làm việc sau. Tôi đã cố gắng làm:

$ myLayer.remove(myShape) 

vì đây là những gì hầu hết các bài đăng dường như đề xuất. Tuy nhiên, tài liệu nói rằng điều này sẽ loại bỏ các lớp từ giai đoạn và không phải là hình dạng từ lớp. Khi tôi thử điều này trong dự án nó trong thực tế loại bỏ các lớp từ sân khấu.

Vì vậy, tôi đang làm điều gì đó sai hoặc có cách nào khác để xóa hình dạng khỏi một lớp không?

+4

Tôi không biết nếu có một cách tốt hơn, nhưng sau khi đọc một số mã js động. Tôi tìm thấy nếu tôi làm myShape.remove() hình dạng được loại bỏ khỏi lớp. – user1724623

+0

cảm ơn! Thông tin hữu ích – tetris11

Trả lời

16

Có hai chức năng có thể hữu ích.

  • childContainer.remove() xóa conCâu hỏi từ cha mẹ của nó.
  • parentContainer.removeChildren() xóa tất cả trẻ em khỏi vùng chứa này.

Chỉnh sửa: Điều này cũng có thể áp dụng cho hình dạng. Đơn giản chỉ cần vẽ lại lớp.

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

thanx, tôi chỉ muốn biết điều này! phát hiện ra rằng bạn thậm chí không cần phải vẽ lại lớp, sau khi gọi loại bỏ nó đi ngay lập tức. – luschn

+0

Cách khôi phục lại lần nữa ?? –

+0

@MahdiAlkhatib nếu bạn vẫn còn có một tham chiếu đến trẻ em sau đó chỉ cần thêm chúng vào lớp/container – BenMQ

2

Một nơi nào đó giữa Kinetic 4.0 và phiên bản mới nhất, xóa (con) ngừng hoạt động. removeChild (con) không hoạt động.

Tôi giải quyết vấn đề này bằng cách sử dụng child.remove();

0

U có thể sử dụng nguyên mẫu của chức năng động

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

baselayer.draw();

Các vấn đề liên quan