Reputation: 1973
The idea is to have two Raphael objects moving together, while one of them is rotating. In the example below, I created two animations - one for the translation, and one for rotation, but I didn't have any luck getting them to work.
var paper = Raphael(0,0,800,400);
var body = paper.rect(10,10,50,30);
var leg = paper.rect(30,35,10,30);
// translation - should be applied to both body and leg
var translation_anim = Raphael.animation( {transform: "t300,0"}, 2000 );
// rotation - to be applied to the leg only
var rotation_anim = Raphael.animation( {
"50%": { transform: "R" + (45).toString() },
"100%": { transform: "R" + (-1*45).toString() }
}, 2000);
body.animate(translation_anim);
leg.animateWith(body,rotation_anim,translation_anim);
Fiddle: http://jsfiddle.net/hx22d/
Upvotes: 1
Views: 353
Reputation: 1129
Fiddle: http://jsfiddle.net/hx22d/4/
Here is the updated code:
var paper = Raphael(0,0,800,400);
var body = paper.rect(10,10,50,30);
var leg = paper.rect(30,35,10,30);
var translation_anim = Raphael.animation({transform: "t300,0"}, 2000);
var rotation_anim = Raphael.animation({
"50%": { transform: "r45 T150,0"},
"100%": { transform: "r-45 T300,0"}
}, 2000);
body.animate(translation_anim);
leg.animateWith(body,translation_anim,rotation_anim);
There was a small syntax error in you code on the last line.
leg.animateWith(body, rotation_anim, translation_anim)
The correct syntax according to Raphael.js documentation is:
element.animateWith(element_to_sync_with, animation_to_sync_with, animation)
->
leg.animateWith(body, translation_anim, rotation_anim)
Hope this helps.
Upvotes: 1