/**
* @private
*/
Ext.define('Ext.fx.animation.Flip', {
extend: 'Ext.fx.animation.Abstract',
alias: 'animation.flip',
config: {
easing: 'ease-in',
/**
* @cfg {String} direction The direction of which the slide animates
* @accessor
*/
direction: 'right',
half: false,
out: null
},
getData: function() {
var me = this,
from = me.getFrom(),
to = me.getTo(),
direction = me.getDirection(),
out = me.getOut(),
half = me.getHalf(),
rotate = half ? 90 : 180,
fromScale = 1,
toScale = 1,
fromRotateX = 0,
fromRotateY = 0,
toRotateX = 0,
toRotateY = 0;
if (out) {
toScale = 0.8;
}
else {
fromScale = 0.8;
}
switch (direction) {
case this.DIRECTION_UP:
case this.DIRECTION_TOP:
if (out) {
toRotateX = rotate;
}
else {
fromRotateX = -rotate;
}
break;
case this.DIRECTION_DOWN:
case this.DIRECTION_BOTTOM:
if (out) {
toRotateX = -rotate;
}
else {
fromRotateX = rotate;
}
break;
case this.DIRECTION_RIGHT:
if (out) {
toRotateY = rotate;
}
else {
fromRotateY = -rotate;
}
break;
case this.DIRECTION_LEFT:
if (out) {
toRotateY = -rotate;
}
else {
fromRotateY = rotate;
}
break;
}
from.setTransform({
rotateX: fromRotateX,
rotateY: fromRotateY,
scale: fromScale
});
to.setTransform({
rotateX: toRotateX,
rotateY: toRotateY,
scale: toScale
});
return this.callParent();
}
});