我试图编写一些动画,但我很难理解期货是如何在飞镖上工作的。飞镖期货(CSS动画)
主要问题是动画本身是一个异步过程,如果我试图链接几个点,它们堆积起来,精灵直接移动到最后一个点。我看过的所有例子都是在函数返回一个值的时候工作的,但是在处理动画的时候并不是这样。
我希望能够检测到动画已完成,以触发下一个动作,但到目前为止我还没有真正成功。
这里是我的代码:
class MovingThing {
String name;
DivElement sprite = new DivElement();
MovingThing(this.name){
sprite.id = name;
sprite.text = name;
sprite.style..width = "30px"
..height = "30px"
..border = "1px solid black"
..position = "absolute"
..transition = "all 2000ms ease-in-out";
querySelector("body").children.add(sprite);
}
Future move(Point p) {
sprite.style..top = p.y.toString() + "px"
..left = p.x.toString() + "px";
return Future.wait([sprite.onTransitionEnd.first]);
}
}
main() {
List<Point> points = [
new Point(20, 20)
, new Point(200, 20)
, new Point(20, 200)
, new Point(100, 100)
];
MovingThing mt = new MovingThing("MT");
Future.forEach(points, (Point p) => mt.move(p));
}
新增示例 –