2012-03-22 52 views
11

Tôi tự hỏi liệu có ai có thể làm sáng tỏ một số cách mà các lớp được quản lý trong Canvas và KineticJS hay không. Tôi đang đấu tranh hiểu tại sao khi tôi rõ ràng(); một lớp, sau đó sử dụng vẽ(); chức năng trên lớp đó một lần nữa, nó trở lại với các hình dạng vv mà tôi ban đầu thêm vào lớp đó.Tìm hiểu cách xóa lớp Canvas & KineticJS

ví dụ:

http://jsfiddle.net/vPGbz/1/

tôi cho rằng thanh toán bù trừ một lớp hoàn toàn loại bỏ nó, và để vẽ lại nó tôi sẽ phải thiết lập hình dạng mới và xây dựng một lớp mới.

Nếu có ai cũng có thể giải thích điều này, tôi sẽ rất biết ơn.

Chúc mừng, Caius

+3

xin lỗi vì sự nhầm lẫn! Tôi sẽ làm việc để tăng cường tài liệu KineticJS –

+0

@EricRowell sẽ rất tuyệt nếu bạn có thể thêm một hàm .removeAll! –

+0

@EricRowell nevermind, tìm thấy removeChildren() –

Trả lời

10

Người ta phải trung thực mà this documentation không được coi là uber-tiết, nhưng khi bạn có thể xem tại đây: http://jsfiddle.net/vPGbz/2/clear sẽ chỉ loại bỏ các đại diện rút ra của một lớp từ đối tượng Stage. Những gì bạn đang tìm kiếm là phương pháp remove được sử dụng để loại bỏ các yếu tố nhất định khỏi lớp.

Giống như:

circleLayer.remove(circle); 
+0

Điều này giúp, cảm ơn. Tài liệu khá mơ hồ Tôi khá quen với việc đọc Tài liệu API, nhưng điều này tôi thấy khó giải mã. –

+0

@CaiusEugene giống như không tồn tại .... – m90

+0

@ m90 Tài liệu này thật kinh khủng. Tôi thấy hữu ích duy nhất là phần hướng dẫn, nhưng nếu điều đó không trả lời (các) câu hỏi của bạn, bạn đã hết may mắn – puk

7

Còn bây giờ, bạn có thể làm layer.children = []; nhưng tôi không biết nếu điều này sẽ có bất kỳ tác dụng phụ mà nó không nên!

Chỉnh sửa: Không thực hiện việc này. Thay vào đó, hãy thực hiện điều này: layer.removeChildren() được tìm thấy tại http://kineticjs.com/api-docs.php dưới Container.

0

Tôi đang sử dụng Kinetics 4.3.1. Tôi làm hai lớp, vì vậy tôi có thể thêm và loại bỏ một trong số họ với hộp kiểm,

bạn có thể kiểm tra liên kết này ra: http://jsfiddle.net/lauraliparulo/uw25p/

Something như thế này:

checkBoxItem.addEventListener('click', function() { 
     if (this.checked) { 
      load(); 
      stage.add(layer2); 
     } 

     else if (!this.checked) { 
      layer2.clear(); 
     } 

    }); 

: -)

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