diff --git a/packages/animations/src/players/animation_group_player.ts b/packages/animations/src/players/animation_group_player.ts index c1f6a40c23abad..01eb6a57f09f24 100644 --- a/packages/animations/src/players/animation_group_player.ts +++ b/packages/animations/src/players/animation_group_player.ts @@ -132,12 +132,15 @@ export class AnimationGroupPlayer implements AnimationPlayer { } getPosition(): number { - let min = 0; - this.players.forEach(player => { - const p = player.getPosition(); - min = Math.min(p, min); - }); - return min; + const longestPlayer = this.players.reduce((longestSoFar, player) => { + const newPlayerIsLongest = player.totalTime > (longestSoFar! as AnimationPlayer).totalTime; + if (longestSoFar === undefined || newPlayerIsLongest) { + return player; + } else { + return longestSoFar; + } + }, undefined); + return longestPlayer !== undefined ? longestPlayer.getPosition() / longestPlayer.totalTime : 0; } beforeDestroy(): void { diff --git a/packages/platform-browser/animations/src/animation_builder.ts b/packages/platform-browser/animations/src/animation_builder.ts index f0022d711d74d5..cbeebcb888eebd 100644 --- a/packages/platform-browser/animations/src/animation_builder.ts +++ b/packages/platform-browser/animations/src/animation_builder.ts @@ -89,7 +89,7 @@ export class RendererAnimationPlayer implements AnimationPlayer { setPosition(p: number): void { this._command('setPosition', p); } - getPosition(): number { return 0; } + getPosition(): number { return this._renderer.engine.players[+this.id].getPosition(); } public totalTime = 0; }