Source: transitions/dissolve.js

goog.provide('lime.transitions.Dissolve');

goog.require('lime.animation.FadeTo');
goog.require('lime.transitions.Transition');

/**
 * Dissolve transition
 * @inheritDoc
 * @extends lime.transitions.Transition
 * @constructor
 */
lime.transitions.Dissolve = function(outgoing, incoming) {
    lime.transitions.Transition.call(this, outgoing, incoming);
};
goog.inherits(lime.transitions.Dissolve, lime.transitions.Transition);


/** @inheritDoc */
lime.transitions.Dissolve.prototype.start = function() {
    this.incoming_.setOpacity(0);
    this.incoming_.setHidden(false);
    var hide = new lime.animation.FadeTo(0).setDuration(this.getDuration()).enableOptimizations();

    goog.events.listen(hide, lime.animation.Event.STOP, function() {
        if (this.outgoing_) {
            this.outgoing_.setOpacity(1);
        }
    }, false, this);

    if (this.outgoing_)
        this.outgoing_.runAction(hide);

    var show = new lime.animation.FadeTo(1).setDuration(this.getDuration());
    this.incoming_.runAction(show);

    goog.events.listen(show, lime.animation.Event.STOP,
        this.finish, false, this);


};