2013-05-28 3 views
1

Есть ли способ, в котором я могу анимировать определенный элемент Рафаэля вокруг происхождения другого элемента? Например, в скрипке ниже есть большой серый прямоугольник и меньший синий квадрат. Когда я нажимаю красный или зеленый квадрат, оба изображения вращаются либо по часовой стрелке, либо против часовой стрелки. Я хочу, чтобы синий квадрат вращался не только на 90 градусов, но и плавно переводил его так, что он сидит в углу серого прямоугольника.Рафаэль animateWith - происхождение анимации?

anim = Raphael.animation({transform: "r"+(spincount+90)}, 500); 
big.animate(anim); 
small.animateWith(big, animParam , anim); 

http://jsfiddle.net/nUXVz/

Единственное, что я могу вспомнить, как я не использую метод animateWith() должным образом, или в моей анимации, мне нужно применить какой-то перевод.

Спасибо!

ответ

1

После нескольких часов работы мне удалось получить то, что я хотел.

http://jsfiddle.net/nUXVz/1/

Чтобы получить то, что я шел, я в конечном итоге добавив перевод к анимации. Поэтому я переводил из середины большего серого прямоугольника (координата + (длина/2) для обоих направлений x и y).

anim = Raphael.animation({transform: "r"+(spincount+90)+","+axisX+","+axisY}, 500); 

Если у кого-либо еще есть какие-либо дополнительные вопросы или более легкое решение, не стесняйтесь публиковать сообщения.

+1

В Рафаэле, поворачивая элемент, мы можем по желанию установить центр вращения в любой точке плоскости. Таким образом, вы сделали лучший способ достичь желаемого результата. Таким образом, на самом деле, вы не добавляете перевод в анимацию, а устанавливаете настраиваемый центр вращения. Центром по умолчанию по умолчанию является геометрический центр самого элемента. – NRC

+0

Проверьте http://raphaeljs.com/reference.html#Element.rotate и http://raphaeljs.com/reference.html#Element.transform – NRC

Смежные вопросы