Famous/famous — pull request #287 by trusktr (2014-09-11 19:57:01+00:00)
Title: TransitionableTransform: animate each axis with different Transitionables.

I updated rotation methods as proof of concept to show that we can animate only specific axes by passing in null for axes we don't want to animate. The result of this is you can animate different axes with different Transitionables.

This isn't the best way to do it, it was just fast and easy. @timjchin suggested we pass in an object instead of three discrete values, and the object can contain only the axes we want to animate.

For example, with my changes, you can do something like

```javascript
var myTT = new TransitionableTransform();
myTT.setRotate([null, Math.PI, null], {duration: 1500, curve: 'easeInOut'});
myTT.setRotate([Math.PI/7, null, Math.PI/7], {duration: 750, curve: 'easeIn'}, function() {
myTT.setRotate([0, null, 0], {duration: 750, curve: 'easeOut'});
});
```

The example will animate only the Y axis with one transition, and X and Z with a separate set of transitions. Try it on a surface to see a flip transition that's more interesting than a single-axis flip.

If we implement it using an object instead of an array in the first parameter, then the API will look like this:

```javascript
var myTT = new TransitionableTransform();
myTT.setRotate({y: Math.PI}, {duration: 1500, curve: 'easeInOut'});
myTT.setRotate({x: Math.PI/7, z: Math.PI/7}, {duration: 750, curve: 'easeIn'}, function() {
myTT.setRotate({x: 0, z: 0}, {duration: 750, curve: 'easeOut'});
});
```

This gives the animation designer more flexibility to do what he wants to do. Any thoughts on this?

If no one gets to it first, I'll update the PR so that it uses object arguments, and for all types of transforms (rotate, skew, scale, translate).