diff --git a/Wpf_AiSportsMicrospace/Dto/MusicJumpRopeContext.cs b/Wpf_AiSportsMicrospace/Dto/MusicJumpRopeContext.cs index 6190c8b..3750c5c 100644 --- a/Wpf_AiSportsMicrospace/Dto/MusicJumpRopeContext.cs +++ b/Wpf_AiSportsMicrospace/Dto/MusicJumpRopeContext.cs @@ -45,7 +45,7 @@ namespace Dto 87.745,88.29,88.835,89.38,89.925,90.47,91.015,91.56,92.105,92.65, 93.195,93.74,94.285,94.83,95.375,95.92,96.465,97.01,97.555,98.1, 98.645,99.19,99.735,100.28,100.825,101.37,101.915,102.46,103.005,103.55, - 104.095,104.64,105.185,105.73,106.275,106.82,107.365,107.91,108.455 + 104.095,104.64,105.185,105.73,106.275,106.82,107.365,107.91 } } }; diff --git a/Wpf_AiSportsMicrospace/MyUserControl/PopSilder.xaml.cs b/Wpf_AiSportsMicrospace/MyUserControl/PopSilder.xaml.cs index 0088a61..edaa56b 100644 --- a/Wpf_AiSportsMicrospace/MyUserControl/PopSilder.xaml.cs +++ b/Wpf_AiSportsMicrospace/MyUserControl/PopSilder.xaml.cs @@ -31,33 +31,36 @@ namespace Wpf_AiSportsMicrospace.MyUserControl public partial class PopSilder : UserControl { - private List _musicBeats = new List() - { - 0.545,1.09,1.635,2.18,2.725,3.27,3.815,4.36,4.905,5.45, - 5.995,6.54,7.085,7.63,8.175,8.72,9.265,9.81,10.355,10.9, - //11.445,11.99,12.535,13.08,13.625,14.17,14.715,15.26,15.805,16.35, - //16.895,17.44,17.985,18.53,19.075,19.62,20.165,20.71,21.255,21.8, - //22.345,22.89,23.435,23.98,24.525,25.07,25.615,26.16,26.705,27.25, - //27.795,28.34,28.885,29.43,29.975,30.52,31.065,31.61,32.155,32.7, - //33.245,33.79,34.335,34.88,35.425,35.97,36.515,37.06,37.605,38.15, - //38.695,39.24,39.785,40.33,40.875,41.42,41.965,42.51,43.055,43.6, - //44.145,44.69,45.235,45.78,46.325,46.87,47.415,47.96,48.505,49.05, - //49.595,50.14,50.685,51.23,51.775,52.32,52.865,53.41,53.955,54.5, - //55.045,55.59,56.135,56.68,57.225,57.77,58.315,58.86,59.405,59.95, - //60.495,61.04,61.585,62.13,62.675,63.22,63.765,64.31,64.855,65.4, - //65.945,66.49,67.035,67.58,68.125,68.67,69.215,69.76,70.305,70.85, - //71.395,71.94,72.485,73.03,73.575,74.12,74.665,75.21,75.755,76.3, - //76.845,77.39,77.935,78.48,79.025,79.57,80.115,80.66,81.205,81.75, - //82.295,82.84,83.385,83.93,84.475,85.02,85.565,86.11,86.655,87.2, - //87.745,88.29,88.835,89.38,89.925,90.47,91.015,91.56,92.105,92.65, - //93.195,93.74,94.285,94.83,95.375,95.92,96.465,97.01,97.555,98.1, - //98.645,99.19,99.735,100.28,100.825,101.37,101.915,102.46,103.005,103.55, - //104.095,104.64,105.185,105.73,106.275,106.82,107.365,107.91,108.455 - }; + //private List _musicBeats = new List() + //{ + // 0.545,1.09,1.635,2.18,2.725,3.27,3.815,4.36,4.905,5.45, + // 5.995,6.54,7.085,7.63,8.175,8.72,9.265,9.81,10.355,10.9, + // //11.445,11.99,12.535,13.08,13.625,14.17,14.715,15.26,15.805,16.35, + // //16.895,17.44,17.985,18.53,19.075,19.62,20.165,20.71,21.255,21.8, + // //22.345,22.89,23.435,23.98,24.525,25.07,25.615,26.16,26.705,27.25, + // //27.795,28.34,28.885,29.43,29.975,30.52,31.065,31.61,32.155,32.7, + // //33.245,33.79,34.335,34.88,35.425,35.97,36.515,37.06,37.605,38.15, + // //38.695,39.24,39.785,40.33,40.875,41.42,41.965,42.51,43.055,43.6, + // //44.145,44.69,45.235,45.78,46.325,46.87,47.415,47.96,48.505,49.05, + // //49.595,50.14,50.685,51.23,51.775,52.32,52.865,53.41,53.955,54.5, + // //55.045,55.59,56.135,56.68,57.225,57.77,58.315,58.86,59.405,59.95, + // //60.495,61.04,61.585,62.13,62.675,63.22,63.765,64.31,64.855,65.4, + // //65.945,66.49,67.035,67.58,68.125,68.67,69.215,69.76,70.305,70.85, + // //71.395,71.94,72.485,73.03,73.575,74.12,74.665,75.21,75.755,76.3, + // //76.845,77.39,77.935,78.48,79.025,79.57,80.115,80.66,81.205,81.75, + // //82.295,82.84,83.385,83.93,84.475,85.02,85.565,86.11,86.655,87.2, + // //87.745,88.29,88.835,89.38,89.925,90.47,91.015,91.56,92.105,92.65, + // //93.195,93.74,94.285,94.83,95.375,95.92,96.465,97.01,97.555,98.1, + // //98.645,99.19,99.735,100.28,100.825,101.37,101.915,102.46,103.005,103.55, + // //104.095,104.64,105.185,105.73,106.275,106.82,107.365,107.91,108.455 + //}; + + private Storyboard _marginStoryboard; private ThicknessAnimation _marginAnimation; private TimedEventTrigger _trigger; private bool _isMiss = true; + private List _musicBeats; public bool IsMiss { get => _isMiss; @@ -66,9 +69,25 @@ namespace Wpf_AiSportsMicrospace.MyUserControl _isMiss = value; } } + + public List MusicBeats + { + get => _musicBeats; + set + { + _musicBeats = value; + InitMusicBeats(); + } + } + public PopSilder() { InitializeComponent(); + //InitMusicBeats(); + } + + private void InitMusicBeats() + { double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]); double startMargin = _musicBeats[0] * 200; ani.Margin = new Thickness(startMargin, 0, 0, 0); @@ -87,15 +106,14 @@ namespace Wpf_AiSportsMicrospace.MyUserControl Height = 5, Background = new SolidColorBrush(Color.FromRgb(0, 0, 0)) }; - + var StackPanel = new StackPanel { Orientation = Orientation.Horizontal }; StackPanel.Children.Add(img); StackPanel.Children.Add(grid); ani.Children.Add(StackPanel); } + } - - private void InitializeMarginAnimation() { double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]) + 1; diff --git a/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml b/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml index 5f99462..f2f7598 100644 --- a/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml +++ b/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml @@ -36,7 +36,7 @@ TextAlignment="Center" /> - + diff --git a/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs b/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs index 474cdaa..d054b6c 100644 --- a/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs +++ b/Wpf_AiSportsMicrospace/Views/JumpRope/MusicJumpRope.xaml.cs @@ -62,18 +62,22 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope DrawCirclesWithText(); // 播放音乐 PlayMusic("raisehand.mp3"); + PkBar.LeftProgress = 0.5; - Random rnd = new Random(); + popSilder1.MusicBeats = _musicJumpRopeContext.MusicBeats["1"]; + popSilder2.MusicBeats = _musicJumpRopeContext.MusicBeats["1"]; - // 模拟 20 次随机更新 - for (int i = 0; i < 200; i++) - { - // 随机左右进度变化,保证总和=1 - double left = rnd.NextDouble(); // 0~1 - PkBar.LeftProgress = left; // RightProgress 自动 1-left + //Random rnd = new Random(); - await Task.Delay(1000); // 200ms 间隔,不卡UI线程 - } + //// 模拟 20 次随机更新 + //for (int i = 0; i < 200; i++) + //{ + // // 随机左右进度变化,保证总和=1 + // double left = rnd.NextDouble(); // 0~1 + // PkBar.LeftProgress = left; // RightProgress 自动 1-left + + // await Task.Delay(1000); // 200ms 间隔,不卡UI线程 + //} } private void UserControl_Unloaded(object sender, RoutedEventArgs e) @@ -259,6 +263,9 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope // 播放背景音乐(循环) Utils.PlayBackgroundMusic("1.MP3", true); + popSilder1.StartMarginAnimation(); + popSilder2.StartMarginAnimation(); + for (int i = seconds; i >= 0; i--) { countdownText.Text = i.ToString(); @@ -481,7 +488,7 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope { _musicJumpRopeContext.UserBeatSyncList[indexCopy]++; _musicBeatTextBlock[indexCopy].Text = $"卡点 x{_musicJumpRopeContext.UserBeatSyncList[indexCopy]}"; - if(indexCopy == 0) + if (indexCopy == 0) { popSilder1.IsMiss = false; } @@ -489,6 +496,12 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope { popSilder2.IsMiss = false; } + double left = _musicJumpRopeContext.UserBeatSyncList[0]; + double right = _musicJumpRopeContext.UserBeatSyncList[1]; + double total = left + right; + + PkBar.LeftProgress = total == 0 ? 0 : Math.Round(left / total, 2); + //if (indexCopy == 0) // LeftBeats.SetSelected(currentSecond, true); //else