guoziyun 7 maanden geleden
bovenliggende
commit
1466362b44
1 gewijzigde bestanden met toevoegingen van 6 en 8 verwijderingen
  1. 6 8
      lib/play/board_play.dart

+ 6 - 8
lib/play/board_play.dart

@@ -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);
     }
 
     // 总动画时长 = 最后一张卡片的启动时间 + 其持续时间