2009-09-18 8 views
5

Je construis une page qui va animer des objets (image/forme/div) et les faire flotter autour de l'écran. Parfois, il peut y avoir un grand nombre d'objets flottant et interagissant.Animation: jQuery ou Raphael?

Une exigence est d'avoir des données associées à chaque objet, car ils auront chacun un identifiant. Donc, si je clique sur un objet, il peut saisir cet ID, puis référencer un tableau contenant les données sur cet objet. Mon débat est, si je devrais utiliser la fonction $ .animate jQuery ou utiliser Raphael. Je sais que SVG serait agréable à utiliser, mais je ne sais pas si je peux donner à chaque objet et ID, puis afficher une div contenant des données associées onclick. Peut-on cliquer sur les éléments SVG pour référencer les éléments DOM? Dans quelle mesure le SVG fonctionne-t-il avec du texte dynamique? Je suis également préoccupé par la puissance de traitement de l'animation. Y a-t-il un meilleur choix à cet égard?

BTW, je ne parle pas de jQuery SVG ici, juste jQuery normal et DOM.

Si quelqu'un a un aperçu de cela, ou des suggestions, ils seraient grandement appréciés!

+0

Tout comme une note rapide - cela est possible avec HTML5 et toile (cliquez sur un point): http://9elements.com/io/ projets/html5/canvas/ – Mottie

+0

En outre, le canevas a tendance à être plus rapide étant qu'il s'agit essentiellement d'un calque fin sur l'API de dessin de système d'exploitation. Cependant, canvas n'est pas aussi complètement exposé au DOM que SVG. – user120242

+0

@ fudgey - Oui, j'ai vu cette démo. Je ne pense vraiment pas que le commentaire qui apparaît sur le clic a réellement quelque chose à voir avec le point sur lequel vous cliquez. Ils sont simplement choisis au hasard, plutôt que d'être assignés à un point. Assez sûr que c'est le cas. –

Répondre

0

Oui. Tous les objets graphiques sont ajoutés en tant qu'objets DOM.

Une démo: http://raphaeljs.com/github/impact.html

code simple de démonstration qui dessine un cercle, attribue un identifiant, et se fixe un événement 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 vous devez faire le dessin fantaisie vecteur et manipulations, Raphaël serait sois sage. Sinon, vous pourriez aussi bien utiliser ce que vous savez. En outre, vous pouvez utiliser à la fois jQuery et Raphael en même temps. D'après les sons de cela, jQuery devrait être assez pour vos besoins.

+0

Oui, je n'ai pas vraiment besoin de faire des dessins vectoriels. En ce moment, je suis surtout préoccupé par la vitesse et le nombre d'objets que je pourrais avoir à l'écran. Et, sur la base de ce qui serait ma meilleure solution. Pour l'instant, je vais juste rester avec jQuery et voir si je rencontre des limites. Merci. –