2010-10-20 36 views
6

Giả sử tôi có một ứng dụng html5/canvas trong đó tôi có thể đặt các đối tượng trên một khung vẽ. Một số loại trình soạn thảo biểu đồ, giống như Visio (nhưng đơn giản hơn nhiều)Tìm hiểu đối tượng nào đã được nhấp vào một html5 Canvas

Có khung nào giúp tôi tìm đối tượng nào được nhấp/kéo không?

Một lựa chọn là để nắm bắt những sự kiện nhấp vấn và duyệt qua tất cả các đối tượng của tôi (một cách bán thông minh) và kiểm tra xem nó được nhấp/draged, nhưng Tôi ghét phải phát minh lại bánh xe :)

Trả lời

0

Thật không may là không có mô hình đối tượng cho những thứ bạn vẽ vào canvas. Bạn sẽ cần phải theo dõi mọi thứ bạn đã vẽ và kích hoạt các sự kiện riêng biệt khi bạn phát hiện các nhấp chuột, mouseup, mousedown, kéo. Điều đó có nghĩa là tạo một trình bao bọc cho tất cả các phương thức ngữ cảnh, lưu trữ các dòng/hình ảnh và các thuộc tính của chúng thành một COM (Mô hình đối tượng Canvas :) và các sự kiện kích hoạt cho mỗi dòng/hình ảnh

Tôi chưa thấy bất cứ điều gì có điều đó. Đây có thể là công việc, tôi đã cố gắng viết mã tùy chỉnh mỗi khi tôi cần thêm tương tác vào Canvas

1

Đối với ứng dụng kiểu Visio hoặc bất kỳ điều gì tương tác với đối tượng được vẽ là quan trọng, bạn ' tốt hơn với SVG. Đã có some open source projects mà bạn có thể sử dụng làm điểm bắt đầu. Vấn đề với SVG là, giống như với bất kỳ công cụ nặng nào của DOM, hiệu năng có thể làm giảm mạnh khi bạn có một số lượng lớn các đối tượng để thao tác.

+0

'một số lượng lớn' là gì? 100? 10.000? – Dribbel

+0

Tôi nhận được hiệu suất chậm chạp khi vẽ trên 10.000 điểm bằng cách sử dụng excanvas –

+0

@Dribbel Nó sẽ thay đổi tùy thuộc vào trình duyệt và thông số máy, nếu mục tiêu của bạn là máy tính để bàn với trình duyệt hiện đại, sau đó vượt quá 10.000, nếu bạn đang sử dụng điện thoại thì có thể giống 1000, nếu bạn đang cố gắng để có được những thứ để làm việc trong IE với VML, có thể một vài trăm. – robertc

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