|
|
@@ -64,8 +64,8 @@ class _BoardPlayState extends State<BoardPlay> with TickerProviderStateMixin {
|
|
|
// 发牌动画相关
|
|
|
late Animation<double> _dealingAnimation;
|
|
|
// 发牌动画参数
|
|
|
- List<double> _pieceStartTimes = []; // 每个卡片的启动时间(单位:ms)
|
|
|
- List<double> _pieceDurations = []; // 每个卡片的移动持续时间(单位:ms)
|
|
|
+ final List<double> _pieceStartTimes = []; // 每个卡片的启动时间(单位:ms)
|
|
|
+ final List<double> _pieceDurations = []; // 每个卡片的移动持续时间(单位:ms)
|
|
|
double _totalDealingDuration = 0; // 发牌动画总时长(ms)
|
|
|
|
|
|
@override
|
|
|
@@ -105,7 +105,7 @@ class _BoardPlayState extends State<BoardPlay> with TickerProviderStateMixin {
|
|
|
dealingAnimationController.addStatusListener(_dealingAnimationStatusListener);
|
|
|
|
|
|
// 初始化翻转动画
|
|
|
- flipAnimationController = AnimationController(vsync: this, duration: Duration(milliseconds: 1000));
|
|
|
+ flipAnimationController = AnimationController(vsync: this, duration: Duration(milliseconds: 500));
|
|
|
flipAnimationController.addListener(_flipAnimationListener);
|
|
|
flipAnimationController.addStatusListener(_flipAnimationStatusListener);
|
|
|
|
|
|
@@ -118,17 +118,15 @@ class _BoardPlayState extends State<BoardPlay> with TickerProviderStateMixin {
|
|
|
_pieceDurations.clear();
|
|
|
|
|
|
// 3. 计算动画参数(速度恒定)
|
|
|
- const double interval = 120; // 发牌间隔(ms):每张牌间隔50ms发出
|
|
|
- const double maxDuration = 500; // 最长移动时间(ms):距离最远的卡片用1000ms
|
|
|
+ const double interval = 120; // 发牌间隔(ms)
|
|
|
+ const double duration = 500; // 每个卡片移动时间(ms)
|
|
|
|
|
|
// 为每个卡片计算启动时间和持续时间
|
|
|
for (int i = 0; i < board!.pieces.length; i++) {
|
|
|
- // final duration = maxDuration - i * interval;
|
|
|
- // 启动时间:第1张0ms,第2张50ms,第3张100ms...)
|
|
|
final startTime = i * interval;
|
|
|
|
|
|
_pieceStartTimes.add(startTime);
|
|
|
- _pieceDurations.add(maxDuration);
|
|
|
+ _pieceDurations.add(duration);
|
|
|
}
|
|
|
|
|
|
// 总动画时长 = 最后一张卡片的启动时间 + 其持续时间
|