Skip to content

Commit 9c26e3c

Browse files
committed
Transitions: no longer tries to stop existing transition because mixing different types of transitions wouldn't work anyway. the screen navigator enforces the rule that only one transition may be active at a time anyway
1 parent e1fcc6f commit 9c26e3c

File tree

5 files changed

+46
-100
lines changed

5 files changed

+46
-100
lines changed

source/feathers/motion/transitions/ColorFade.as

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,6 @@ package feathers.motion.transitions
3232
{
3333
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
3434
}
35-
36-
if(oldScreen)
37-
{
38-
var activeTween:ColorFadeTween = ColorFadeTween.SCREEN_TO_TWEEN[oldScreen] as ColorFadeTween;
39-
if(activeTween)
40-
{
41-
//force the existing tween to finish so that the
42-
//properties of the old screen end up in a good state.
43-
activeTween.advanceTime(activeTween.totalTime);
44-
}
45-
}
46-
4735
if(newScreen)
4836
{
4937
newScreen.alpha = 0;
@@ -73,14 +61,11 @@ import starling.display.Quad;
7361

7462
class ColorFadeTween extends Tween
7563
{
76-
internal static const SCREEN_TO_TWEEN:Dictionary = new Dictionary(true);
77-
7864
public function ColorFadeTween(target:DisplayObject, otherTarget:DisplayObject,
7965
color:uint, duration:Number, ease:Object, onCompleteCallback:Function,
8066
tweenProperties:Object)
8167
{
8268
super(target, duration, ease);
83-
SCREEN_TO_TWEEN[target] = this;
8469
if(target.alpha == 0)
8570
{
8671
this.fadeTo(1);
@@ -138,7 +123,6 @@ class ColorFadeTween extends Tween
138123

139124
private function cleanupTween():void
140125
{
141-
delete SCREEN_TO_TWEEN[this.target];
142126
this._overlay.removeFromParent(true);
143127
this.target.visible = true;
144128
if(this._otherTarget)

source/feathers/motion/transitions/Cube.as

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ package feathers.motion.transitions
1818
{
1919
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
2020
{
21-
validateAndCleanup(oldScreen, newScreen);
21+
if(!oldScreen && !newScreen)
22+
{
23+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
24+
}
2225
new CubeTween(newScreen, oldScreen, Math.PI / 2, 0, duration, ease, onComplete, tweenProperties);
2326
}
2427
}
@@ -27,7 +30,10 @@ package feathers.motion.transitions
2730
{
2831
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
2932
{
30-
validateAndCleanup(oldScreen, newScreen);
33+
if(!oldScreen && !newScreen)
34+
{
35+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
36+
}
3137
new CubeTween(newScreen, oldScreen, -Math.PI / 2, 0, duration, ease, onComplete, tweenProperties);
3238
}
3339
}
@@ -36,7 +42,10 @@ package feathers.motion.transitions
3642
{
3743
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
3844
{
39-
validateAndCleanup(oldScreen, newScreen);
45+
if(!oldScreen && !newScreen)
46+
{
47+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
48+
}
4049
new CubeTween(newScreen, oldScreen, 0, -Math.PI / 2, duration, ease, onComplete, tweenProperties);
4150
}
4251
}
@@ -45,27 +54,11 @@ package feathers.motion.transitions
4554
{
4655
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
4756
{
48-
validateAndCleanup(oldScreen, newScreen);
49-
new CubeTween(newScreen, oldScreen, 0, Math.PI / 2, duration, ease, onComplete, tweenProperties);
50-
}
51-
}
52-
53-
private static function validateAndCleanup(oldScreen:DisplayObject, newScreen:DisplayObject):void
54-
{
55-
if(!oldScreen && !newScreen)
56-
{
57-
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
58-
}
59-
60-
if(oldScreen)
61-
{
62-
var activeTween:CubeTween = CubeTween.SCREEN_TO_TWEEN[oldScreen] as CubeTween;
63-
if(activeTween)
57+
if(!oldScreen && !newScreen)
6458
{
65-
//force the existing tween to finish so that the
66-
//properties of the old screen end up in a good state.
67-
activeTween.advanceTime(activeTween.totalTime);
59+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
6860
}
61+
new CubeTween(newScreen, oldScreen, 0, Math.PI / 2, duration, ease, onComplete, tweenProperties);
6962
}
7063
}
7164
}
@@ -83,8 +76,6 @@ import starling.display.Sprite3D;
8376

8477
class CubeTween extends Tween
8578
{
86-
internal static const SCREEN_TO_TWEEN:Dictionary = new Dictionary(true);
87-
8879
public function CubeTween(newScreen:DisplayObject, oldScreen:DisplayObject,
8980
rotationYOffset:Number, rotationXOffset:Number,
9081
duration:Number, ease:Object, onCompleteCallback:Function,
@@ -182,7 +173,6 @@ class CubeTween extends Tween
182173
this._navigator.addChild(oldScreen);
183174
}
184175
this._navigator.removeChild(cube, true);
185-
delete SCREEN_TO_TWEEN[this.target];
186176
if(this._onCompleteCallback !== null)
187177
{
188178
this._onCompleteCallback();

source/feathers/motion/transitions/Fade.as

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ package feathers.motion.transitions
2323
{
2424
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
2525
}
26-
2726
if(newScreen)
2827
{
2928
newScreen.alpha = 0;
@@ -55,7 +54,6 @@ package feathers.motion.transitions
5554
{
5655
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
5756
}
58-
5957
if(oldScreen)
6058
{
6159
//make sure the old screen is on top
@@ -87,7 +85,6 @@ package feathers.motion.transitions
8785
{
8886
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
8987
}
90-
9188
if(newScreen)
9289
{
9390
newScreen.alpha = 0;

source/feathers/motion/transitions/Flip.as

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ package feathers.motion.transitions
1818
{
1919
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
2020
{
21-
validateAndCleanup(oldScreen, newScreen);
21+
if(!oldScreen && !newScreen)
22+
{
23+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
24+
}
2225
new FlipTween(newScreen, oldScreen, Math.PI, 0, duration, ease, onComplete, tweenProperties);
2326
}
2427
}
@@ -27,7 +30,10 @@ package feathers.motion.transitions
2730
{
2831
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
2932
{
30-
validateAndCleanup(oldScreen, newScreen);
33+
if(!oldScreen && !newScreen)
34+
{
35+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
36+
}
3137
new FlipTween(newScreen, oldScreen, -Math.PI, 0, duration, ease, onComplete, tweenProperties);
3238
}
3339
}
@@ -36,7 +42,10 @@ package feathers.motion.transitions
3642
{
3743
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
3844
{
39-
validateAndCleanup(oldScreen, newScreen);
45+
if(!oldScreen && !newScreen)
46+
{
47+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
48+
}
4049
new FlipTween(newScreen, oldScreen, 0, -Math.PI, duration, ease, onComplete, tweenProperties);
4150
}
4251
}
@@ -45,27 +54,11 @@ package feathers.motion.transitions
4554
{
4655
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
4756
{
48-
validateAndCleanup(oldScreen, newScreen);
49-
new FlipTween(newScreen, oldScreen, 0, Math.PI, duration, ease, onComplete, tweenProperties);
50-
}
51-
}
52-
53-
private static function validateAndCleanup(oldScreen:DisplayObject, newScreen:DisplayObject):void
54-
{
55-
if(!oldScreen && !newScreen)
56-
{
57-
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
58-
}
59-
60-
if(oldScreen)
61-
{
62-
var activeTween:FlipTween = FlipTween.SCREEN_TO_TWEEN[oldScreen] as FlipTween;
63-
if(activeTween)
57+
if(!oldScreen && !newScreen)
6458
{
65-
//force the existing tween to finish so that the
66-
//properties of the old screen end up in a good state.
67-
activeTween.advanceTime(activeTween.totalTime);
59+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
6860
}
61+
new FlipTween(newScreen, oldScreen, 0, Math.PI, duration, ease, onComplete, tweenProperties);
6962
}
7063
}
7164
}
@@ -81,8 +74,6 @@ import starling.display.Sprite3D;
8174

8275
class FlipTween extends Tween
8376
{
84-
internal static const SCREEN_TO_TWEEN:Dictionary = new Dictionary(true);
85-
8677
public function FlipTween(newScreen:DisplayObject, oldScreen:DisplayObject,
8778
rotationYOffset:Number, rotationXOffset:Number,
8879
duration:Number, ease:Object, onCompleteCallback:Function,
@@ -237,7 +228,6 @@ class FlipTween extends Tween
237228
screen.y = 0;
238229
this._navigator.addChild(screen);
239230
}
240-
delete SCREEN_TO_TWEEN[this.target];
241231
if(this._onCompleteCallback !== null)
242232
{
243233
this._onCompleteCallback();

source/feathers/motion/transitions/Slide.as

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ package feathers.motion.transitions
1818
{
1919
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
2020
{
21-
validateAndCleanup(oldScreen, newScreen);
22-
21+
if(!oldScreen && !newScreen)
22+
{
23+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
24+
}
2325
if(newScreen)
2426
{
2527
if(oldScreen)
@@ -44,8 +46,10 @@ package feathers.motion.transitions
4446
{
4547
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
4648
{
47-
validateAndCleanup(oldScreen, newScreen);
48-
49+
if(!oldScreen && !newScreen)
50+
{
51+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
52+
}
4953
if(newScreen)
5054
{
5155
if(oldScreen)
@@ -70,8 +74,10 @@ package feathers.motion.transitions
7074
{
7175
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
7276
{
73-
validateAndCleanup(oldScreen, newScreen);
74-
77+
if(!oldScreen && !newScreen)
78+
{
79+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
80+
}
7581
if(newScreen)
7682
{
7783
if(oldScreen)
@@ -96,8 +102,10 @@ package feathers.motion.transitions
96102
{
97103
return function(oldScreen:DisplayObject, newScreen:DisplayObject, onComplete:Function):void
98104
{
99-
validateAndCleanup(oldScreen, newScreen);
100-
105+
if(!oldScreen && !newScreen)
106+
{
107+
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
108+
}
101109
if(newScreen)
102110
{
103111
if(oldScreen)
@@ -117,25 +125,6 @@ package feathers.motion.transitions
117125
}
118126
}
119127
}
120-
121-
private static function validateAndCleanup(oldScreen:DisplayObject, newScreen:DisplayObject):void
122-
{
123-
if(!oldScreen && !newScreen)
124-
{
125-
throw new ArgumentError(SCREEN_REQUIRED_ERROR);
126-
}
127-
128-
if(oldScreen)
129-
{
130-
var activeTween:SlideTween = SlideTween.SCREEN_TO_TWEEN[oldScreen] as SlideTween;
131-
if(activeTween)
132-
{
133-
//force the existing tween to finish so that the
134-
//properties of the old screen end up in a good state.
135-
activeTween.advanceTime(activeTween.totalTime);
136-
}
137-
}
138-
}
139128
}
140129
}
141130

@@ -147,14 +136,11 @@ import starling.display.DisplayObject;
147136

148137
class SlideTween extends Tween
149138
{
150-
internal static const SCREEN_TO_TWEEN:Dictionary = new Dictionary(true);
151-
152139
public function SlideTween(target:DisplayObject, otherTarget:DisplayObject,
153140
xOffset:Number, yOffset:Number, duration:Number, ease:Object,
154141
onCompleteCallback:Function, tweenProperties:Object)
155142
{
156143
super(target, duration, ease);
157-
SCREEN_TO_TWEEN[target] = this;
158144
if(xOffset != 0)
159145
{
160146
this._xOffset = xOffset;
@@ -212,7 +198,6 @@ class SlideTween extends Tween
212198

213199
private function cleanupTween():void
214200
{
215-
delete SCREEN_TO_TWEEN[this.target];
216201
this.target.x = 0;
217202
this.target.y = 0;
218203
if(this._otherTarget)

0 commit comments

Comments
 (0)