2009-09-18 12 views
5

Tôi đang xây dựng một trang sẽ làm động các đối tượng (hình ảnh/hình/div) và thả chúng xung quanh màn hình. Đôi khi có thể có một số lượng lớn các đối tượng trôi nổi và tương tác.Hoạt ảnh: jQuery hoặc Raphael?

Yêu cầu là có dữ liệu được liên kết với từng đối tượng vì mỗi người sẽ có id. Vì vậy, nếu tôi nhấp vào một đối tượng, nó có thể lấy ID đó, sau đó tham chiếu một mảng chứa dữ liệu về đối tượng đó.

Cuộc tranh luận của tôi là, nếu tôi nên sử dụng hàm jQuery $ .animate hoặc sử dụng Raphael. Tôi biết rằng SVG sẽ rất tốt để sử dụng, nhưng tôi không chắc liệu tôi có thể cung cấp cho mỗi đối tượng và id, sau đó đưa lên một div chứa dữ liệu liên quan onclick. Có thể nhấp vào phần tử DOM tham chiếu phần tử SVG không? SVG hoạt động tốt như thế nào với văn bản động? Tôi cũng quan tâm đến mức độ xử lý mà hoạt ảnh sẽ thực hiện. Có một sự lựa chọn tốt hơn trong lĩnh vực này?

BTW, tôi không nói về jQuery SVG ở đây, chỉ cần jQuery và DOM bình thường.

Nếu có ai có bất kỳ thông tin chi tiết nào về điều này hoặc đề xuất chúng sẽ được đánh giá cao!

+0

Cũng như ghi chú nhanh - đây là có thể với HTML5 và canvas (nhấp vào bất kỳ dấu chấm): http://9elements.com/io/ projects/html5/canvas/ – Mottie

+0

Ngoài ra, canvas có xu hướng nhanh hơn khi nó cơ bản là một lớp mỏng trên API bản vẽ hệ điều hành. Tuy nhiên, canvas không được hiển thị đầy đủ với DOM dưới dạng SVG. – user120242

+0

@ fudgey - Vâng, tôi đã xem bản trình diễn đó. Tôi thực sự không nghĩ rằng nhận xét xuất hiện trên nhấp chuột thực sự có liên quan đến dấu chấm bạn nhấp vào. Chúng chỉ được chọn ngẫu nhiên, thay vì được gán cho một dấu chấm. Khá chắc chắn đây là trường hợp. –

Trả lời

0

Có. Tất cả các đối tượng đồ họa được thêm dưới dạng đối tượng DOM.

Một bản demo: http://raphaeljs.com/github/impact.html

đơn giản code demo mà rút ra một vòng tròn, gán một id, và gắn một sự kiện onclick:

var paper = Raphael(10, 50, 320, 200); 
// Creates circle at x = 50, y = 40, with radius 10 
var circle = paper.circle(50, 40, 10); 
// Sets the fill attribute of the circle to red (#f00) 
circle.attr("fill", "#f00"); 
// Sets the stroke attribute of the circle to white (#fff) 
circle.attr("stroke", "#fff"); 
//assign circle id="lolcats" 
circle.node.id="lolcats"; 
//onclick alert id 
circle.node.onclick=function(){alert(this.id)}; 

Nếu bạn cần phải làm bản vẽ vector lạ mắt và thao tác, Raphael sẽ được tốt. Nếu không, bạn cũng có thể sử dụng những gì bạn biết. Ngoài ra, bạn có thể sử dụng cả jQuery và Raphael cùng một lúc.
Từ những âm thanh của nó, jQuery nên đủ lớn cho nhu cầu của bạn.

+0

Vâng, tôi không thực sự cần phải làm bản vẽ vector. Ngay bây giờ tôi hầu như lo lắng về tốc độ, và có bao nhiêu vật thể tôi có thể có trên màn hình. Và, dựa trên đó sẽ là giải pháp tốt nhất của tôi. Bây giờ, tôi sẽ chỉ gắn bó với jQuery và xem liệu tôi có gặp phải bất kỳ hạn chế nào không. Cảm ơn. –