flutter/examples/game/lib/custom_actions.dart

34 lines
930 B
Dart

part of game;
class ActionCircularMove extends ActionInterval {
ActionCircularMove(this.setter, this.center, this.radius, this.startAngle, this.clockWise, double duration) : super (duration);
final Function setter;
final Point center;
final double radius;
final double startAngle;
final bool clockWise;
void update(double t) {
if (!clockWise) t = -t;
double rad = radians(startAngle + t * 360.0);
Offset offset = new Offset(math.cos(rad) * radius, math.sin(rad) * radius);
Point pos = center + offset;
setter(pos);
}
}
class ActionOscillate extends ActionInterval {
ActionOscillate(this.setter, this.center, this.radius, double duration) : super(duration);
final Function setter;
final Point center;
final double radius;
void update(double t) {
double rad = radians(t * 360.0);
Offset offset = new Offset(math.sin(rad) * radius, 0.0);
setter(center + offset);
}
}