Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Unified Diff: sky/framework/sky-ink-splash.sky

Issue 956753002: Make splash animations abort on scroll. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/framework/sky-ink-splash.sky
diff --git a/sky/framework/sky-ink-splash.sky b/sky/framework/sky-ink-splash.sky
index 9f920e9271163d5ecc757daf1a64d2a276de4e18..a56ebeb065b2cd87c293b3b9da5a05d0d83dfe86 100644
--- a/sky/framework/sky-ink-splash.sky
+++ b/sky/framework/sky-ink-splash.sky
@@ -36,6 +36,7 @@ import "animation/curves.dart";
import "animation/timer.dart";
import "dart:math" as math;
import "dart:sky";
+import "dart:async";
const double _kSplashSize = 400.0;
const double _kSplashDuration = 500.0;
@@ -46,6 +47,7 @@ class SkyInkSplash extends SkyElement implements AnimationDelegate {
Element _splash;
double _offsetX;
double _offsetY;
+ Completer<SkyInkSplash> _completer = new Completer();
SkyInkSplash() {
_animation = new AnimationController(this);
@@ -55,7 +57,7 @@ class SkyInkSplash extends SkyElement implements AnimationDelegate {
_splash = shadowRoot.getElementById('splash');
}
- void start(double x, double y, ClientRect rect) {
+ Future start(double x, double y, ClientRect rect) {
_offsetX = x - rect.left;
_offsetY = y - rect.top;
_animation.start(
@@ -63,11 +65,23 @@ class SkyInkSplash extends SkyElement implements AnimationDelegate {
end: _kSplashSize,
duration: _kSplashDuration,
curve: easeOut);
+ return _completer.future;
+ }
+
+ void _done() {
+ remove();
+ _completer.complete(this);
+ }
+
+ void cancel() {
+ // TODO(eseidel): Should fade away instead of stopping immediately.
+ _animation.stop();
+ _done();
}
void updateAnimation(double p) {
if (p == _kSplashSize) {
- remove();
+ _done();
return;
}
_splash.style['top'] = '${_offsetY - p/2}px';

Powered by Google App Engine
This is Rietveld 408576698