1 goog.provide('lime.transitions.MoveInDown'); 2 3 goog.provide('lime.transitions.MoveInLeft'); 4 goog.provide('lime.transitions.MoveInRight'); 5 goog.provide('lime.transitions.MoveInUp'); 6 goog.provide('lime.transitions.SlideIn'); 7 8 9 goog.provide('lime.transitions.SlideInDown'); 10 goog.provide('lime.transitions.SlideInLeft'); 11 goog.provide('lime.transitions.SlideInRight'); 12 goog.provide('lime.transitions.SlideInUp'); 13 14 15 goog.require('lime.animation.MoveBy'); 16 goog.require('lime.transitions.Transition'); 17 18 /** 19 * Slide-In transition. 20 * @param {lime.scene} outgoing Outgoing scene. 21 * @param {lime.scene} incoming Incoming scene. 22 * @param {boolean=} opt_movein Use Move-In transition. 23 * @constructor 24 * @extends lime.transitions.Transition 25 */ 26 lime.transitions.SlideIn = function(outgoing, incoming, opt_movein) { 27 goog.base(this, outgoing, incoming); 28 29 this.mode_ = lime.transitions.SlideIn.Mode.LEFT; 30 31 this.movein_ = opt_movein || false; 32 33 }; 34 goog.inherits(lime.transitions.SlideIn, lime.transitions.Transition); 35 36 37 /** 38 * Enum for different animation directions. 39 * @enum {number} 40 */ 41 lime.transitions.SlideIn.Mode = { 42 LEFT: 0, 43 UP: 1, 44 RIGHT: 2, 45 DOWN: 4 46 }; 47 48 /** @inheritDoc */ 49 lime.transitions.SlideIn.prototype.start = function() { 50 var size = this.incoming_.getSize(); 51 var delta = new goog.math.Coordinate(0, 0); 52 53 switch (this.mode_) { 54 case lime.transitions.SlideIn.Mode.LEFT: 55 this.incoming_.setPosition(-size.width, 0); 56 delta.x = size.width; 57 break; 58 59 case lime.transitions.SlideIn.Mode.UP: 60 this.incoming_.setPosition(0, -size.height); 61 delta.y = size.height; 62 break; 63 64 case lime.transitions.SlideIn.Mode.RIGHT: 65 this.incoming_.setPosition(size.width, 0); 66 delta.x = -size.width; 67 break; 68 69 case lime.transitions.SlideIn.Mode.DOWN: 70 this.incoming_.setPosition(0, size.height); 71 delta.y = -size.height; 72 break; 73 } 74 this.incoming_.setHidden(false); 75 76 var move = new lime.animation.MoveBy(delta). 77 setDuration(this.getDuration()); 78 79 if (this.outgoing_ && !this.movein_) move.addTarget(this.outgoing_); 80 81 move.addTarget(this.incoming_); 82 83 goog.events.listen(move, lime.animation.Event.STOP, 84 this.finish, false, this); 85 86 move.play(); 87 }; 88 89 /** @inheritDoc */ 90 lime.transitions.SlideIn.prototype.finish = function() { 91 if (this.outgoing_) 92 this.outgoing_.setPosition(0, 0); 93 94 lime.transitions.Transition.prototype.finish.call(this); 95 }; 96 97 /** 98 * Set the mode for transition. Mode defines the animation direction. 99 * @param {lime.transitions.SlideIn.Mode} value New mode. 100 * @return {lime.transitions.SlideIn} object itself. 101 */ 102 lime.transitions.SlideIn.prototype.setMode = function(value) { 103 this.mode_ = value; 104 return this; 105 }; 106 107 108 /** 109 * @inheritDoc 110 * @extends lime.transitions.SlideIn 111 */ 112 lime.transitions.SlideInLeft = lime.transitions.SlideIn; 113 114 /** 115 * @inheritDoc 116 * @constructor 117 * @extends lime.transitions.SlideIn 118 */ 119 lime.transitions.SlideInUp = function(outgoing, incoming) { 120 goog.base(this, outgoing, incoming); 121 122 this.setMode(lime.transitions.SlideIn.Mode.UP); 123 }; 124 goog.inherits(lime.transitions.SlideInUp, lime.transitions.SlideIn); 125 126 /** 127 * @inheritDoc 128 * @constructor 129 * @extends lime.transitions.SlideIn 130 */ 131 lime.transitions.SlideInRight = function(outgoing, incoming) { 132 goog.base(this, outgoing, incoming); 133 134 this.setMode(lime.transitions.SlideIn.Mode.RIGHT); 135 }; 136 goog.inherits(lime.transitions.SlideInRight, lime.transitions.SlideIn); 137 138 /** 139 * @inheritDoc 140 * @constructor 141 * @extends lime.transitions.SlideIn 142 */ 143 lime.transitions.SlideInDown = function(outgoing, incoming) { 144 goog.base(this, outgoing, incoming); 145 146 this.setMode(lime.transitions.SlideIn.Mode.DOWN); 147 }; 148 goog.inherits(lime.transitions.SlideInDown, lime.transitions.SlideIn); 149 150 151 152 153 /** 154 * Move-In transition. Difference form slide-in is that outgoing scene 155 * does not move. 156 * @inheritDoc 157 * @constructor 158 * @extends lime.transitions.SlideInLeft 159 */ 160 lime.transitions.MoveInLeft = function(outgoing, incoming) { 161 goog.base(this, outgoing, incoming, true); 162 }; 163 goog.inherits(lime.transitions.MoveInLeft, lime.transitions.SlideInLeft); 164 165 /** 166 * @inheritDoc 167 * @constructor 168 * @extends lime.transitions.SlideInUp 169 */ 170 lime.transitions.MoveInUp = function(outgoing, incoming) { 171 goog.base(this, outgoing, incoming, true); 172 }; 173 goog.inherits(lime.transitions.MoveInUp, lime.transitions.SlideInUp); 174 175 /** 176 * @inheritDoc 177 * @constructor 178 * @extends lime.transitions.SlideInRight 179 */ 180 lime.transitions.MoveInRight = function(outgoing, incoming) { 181 goog.base(this, outgoing, incoming, true); 182 }; 183 goog.inherits(lime.transitions.MoveInRight, lime.transitions.SlideInRight); 184 185 /** 186 * @inheritDoc 187 * @constructor 188 * @extends lime.transitions.SlideInDown 189 */ 190 lime.transitions.MoveInDown = function(outgoing, incoming) { 191 goog.base(this, outgoing, incoming, true); 192 }; 193 goog.inherits(lime.transitions.MoveInDown, lime.transitions.SlideInDown); 194 195 196 197 198