2012-04-10 12 views
5

Utilizando Raphael 2.0, estoy tratando de aplicar una transformación a un conjunto de objetos de una manera relativa a todos los objetos en el conjunto. Sin embargo, el efecto que obtengo es que la transformación se aplica a cada elemento individualmente, independientemente de los otros objetos en el conjunto.Aplicar una transformación a un conjunto en Raphael.js

Por ejemplo: http://jsfiddle.net/tim_iles/VCca9/8/ - si descomenta ahora la última línea y ejecuta el código, cada círculo se escala a 0.5x. El efecto real que estoy tratando de lograr sería escalar todo el conjunto de círculos, por lo que sus distancias relativas también se escalarán, lo que debería colocar a los cuatro dentro del cuadro delimitador del cuadrado blanco.

¿Hay alguna manera de lograrlo con las herramientas integradas de Raphael?

Respuesta

11

Cuando escala, el primer parámetro es la X-scale. Si no proporciona ningún otro parámetro, lo usará como escala Y y escalará alrededor del centro del objeto.

Cuando escalaste el rectángulo, se escalo alrededor del centro del rectángulo. Si también desea que los círculos escalen alrededor de ese punto, en lugar de sus centros, debe proporcionar ese punto.

Así que la última línea podría ser set.transform("s0.5,0.5,100,100"); (100,100 ser el centro del rectángulo que ha escalado)

Al menos, creo que esto es lo que está pidiendo.

Cuestiones relacionadas