Animation: Animating Along a Curved Path
+ +This demonstrates how to animate the position of an element along a curve.
Click anywhere to move the element to your click position.
+Setting up the HTML
+First we add some HTML to animate.
+
<span id="demo"></span>
<span id="demo"></span>Creating the Anim Instance
+Now we create an instance of Y.Anim, passing it a configuration object that includes the node we wish to animate.
var node = Y.get('#demo'); var anim = new Y.Anim({ node: node, duration: 1.5, easing: Y.Easing.easeOut });
var node = Y.get('#demo'); + +var anim = new Y.Anim({ + node: node, + duration: 1.5, + easing: Y.Easing.easeOut +});
Changing Attributes
+A click handler will set the to value before run is called.
var onClick = function(e) { anim.set('to', { curve: randomCurve([e.pageX, e.pageY]) }); anim.run(); };
var onClick = function(e) { + anim.set('to', { + curve: randomCurve([e.pageX, e.pageY]) + }); + anim.run(); +};
Running the Animation
+Finally we add an event handler to run the animation.
+
Y.get('document').on('click', onClick);
Y.get('document').on('click', onClick);
Full Script Source
+
YUI().use('anim', function(Y) { var node = Y.get('#demo'); var anim = new Y.Anim({ node: node, duration: 1.5, easing: Y.Easing.easeOut }); var randomCurve = function(end) { var points = [], n = 3, winWidth = node.get('winWidth'), winHeight = node.get('winHeight'); for (var i = 0; i < n; ++i) { points.push([ Math.floor(Math.random() * winWidth), Math.floor(Math.random() * winHeight) ]); } if (end) { points.push(end); } return points; }; var onClick = function(e) { anim.set('to', { curve: randomCurve([e.pageX, e.pageY]) }); anim.run(); }; Y.get('document').on('click', onClick); });
YUI().use('anim', function(Y) { + var node = Y.get('#demo'); + + var anim = new Y.Anim({ + node: node, + duration: 1.5, + easing: Y.Easing.easeOut + }); + + var randomCurve = function(end) { + var points = [], + n = 3, + winWidth = node.get('winWidth'), + winHeight = node.get('winHeight'); + + for (var i = 0; i < n; ++i) { + points.push([ + Math.floor(Math.random() * winWidth), + Math.floor(Math.random() * winHeight) + ]); + } + + if (end) { + points.push(end); + } + return points; + }; + + var onClick = function(e) { + anim.set('to', { + curve: randomCurve([e.pageX, e.pageY]) + }); + anim.run(); + }; + + Y.get('document').on('click', onClick); + +});

