2009-09-18 43 views
5

Sto costruendo una pagina che animerà gli oggetti (immagine/forma/div) e li farà galleggiare sullo schermo. A volte può esserci un gran numero di oggetti fluttuanti e interagenti.Animazione: jQuery o Raphael?

Un requisito è quello di avere dati associati a ciascun oggetto, poiché ognuno di essi avrà un ID. Quindi, se clicco su un oggetto, posso prendere quell'ID, quindi fare riferimento a un array che contiene i dati su quell'oggetto.

Il mio dibattito è, se dovrei usare la funzione jQuery $ .animate o usare Raffaello. So che SVG sarebbe bello da usare, ma non sono sicuro di poter fornire ogni oggetto e id, quindi aprire un div contenente i dati associati onclick. È possibile fare clic sugli elementi SVG facendo riferimento agli elementi DOM? Quanto funziona SVG con il testo dinamico? Sono anche preoccupato di quanta potenza di elaborazione avrà l'animazione. C'è una scelta migliore a questo riguardo?

BTW, non sto parlando di jQuery SVG qui, solo normale jQuery e DOM.

Se qualcuno ha qualche idea in questo, o suggerimenti sarebbero molto apprezzati!

+0

Proprio come una breve nota - questo è possibile con HTML5 e tela (fare clic su qualsiasi punto): http://9elements.com/io/ projects/html5/canvas/ – Mottie

+0

Inoltre, la tela tende ad essere più veloce essendo fondamentalmente uno strato sottile sull'API di disegno del SO. Tuttavia, il canvas non è completamente esposto al DOM come SVG. – user120242

+0

@ fudgey - Sì, ho visto quella demo. Davvero non penso che il commento che appare sul click abbia in realtà qualcosa a che fare con il punto che clicchi. Sono scelti a caso, anziché assegnati a un punto. Abbastanza sicuro è questo il caso. –

risposta

0

Sì. Tutti gli oggetti grafici vengono aggiunti come oggetti DOM.

Una demo: http://raphaeljs.com/github/impact.html

semplice codice demo che disegna un cerchio, assegna un ID, e si attacca 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)}; 

Se avete bisogno di fare il disegno vettoriale di fantasia e manipolazioni, Raffaello avrebbe essere buono. Altrimenti, potresti anche usare quello che sai. Inoltre, puoi utilizzare contemporaneamente jQuery e Raphael.
Tuttavia, dal suono, jQuery dovrebbe essere abbastanza per le tue esigenze.

+0

Sì, non ho davvero bisogno di fare disegni vettoriali. Al momento sono principalmente preoccupato della velocità e di quanti oggetti potrei avere sullo schermo. E, basato su quella che sarebbe la mia migliore soluzione. Per ora, mi limiterò a jQuery e vedrò se mi imbatto in eventuali limitazioni. Grazie. –

Problemi correlati