我試圖編寫一些動畫,但我很難理解期貨是如何在飛鏢上工作的。飛鏢期貨(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));
}
新增示例 –