2009-09-18 13 views
5

Estoy construyendo una página que animará los objetos (imagen/forma/div) y los hará flotar alrededor de la pantalla. A veces puede haber una gran cantidad de objetos flotando e interactuando.Animación: jQuery o Raphael?

Un requisito es tener datos asociados con cada objeto, ya que cada uno de ellos tendrá una identificación. Entonces, si hago clic en un objeto, puede tomar ese ID, luego hacer referencia a un conjunto que contiene los datos sobre ese objeto.

Mi debate es si debería usar la función jQuery $ .animate o usar Raphael. Sé que SVG sería agradable de usar, pero no estoy seguro si puedo dar cada objeto y su identificación, y luego mostrar un div con datos asociados al hacer clic. ¿Pueden los elementos SVG hacer referencia a los elementos DOM? ¿Qué tan bien funciona SVG con texto dinámico? También me preocupa cuánto poder de procesamiento tomará la animación. ¿Hay una mejor opción en este sentido?

BTW, no estoy hablando de jQuery SVG aquí, solo jQuery normal y DOM.

¡Si alguien tiene alguna idea sobre esto, o sugerencias, sería muy apreciado!

+0

Así como una nota rápida - esto es posible con HTML 5 y lona (haga clic en cualquier punto): http://9elements.com/io/ projects/html5/canvas/ – Mottie

+0

Además, el lienzo tiende a ser más rápido ya que básicamente es una capa delgada sobre la API de dibujo del sistema operativo. Sin embargo, canvas no está tan expuesto al DOM como a SVG. – user120242

+0

@ fudgey - Sí, he visto esa demostración. Realmente no creo que el comentario que aparece al hacer clic realmente tenga algo que ver con el punto en el que haces clic. Solo se eligen al azar, en lugar de asignarse a un punto. Estoy bastante seguro de que este es el caso. –

Respuesta

0

Sí. Todos los objetos gráficos se agregan como objetos DOM.

Una demostración: http://raphaeljs.com/github/impact.html

código simple demo que dibuja un círculo, asigna un id, y se inserta un evento 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)}; 

Si lo que necesita hacer de fantasía dibujo vectorial y las manipulaciones, Rafael haría sé bueno. Si no, también podrías usar lo que sabes. Además, puedes usar jQuery y Raphael al mismo tiempo.
Por lo que parece, jQuery debería ser suficiente para sus necesidades.

+0

Sí, realmente no necesito hacer dibujos vectoriales. En este momento, me preocupa sobre todo la velocidad y la cantidad de objetos que podría tener en la pantalla. Y, basado en eso, sería mi mejor solución. Por ahora, me quedaré con jQuery y veré si encuentro alguna limitación. Gracias. –