This commit is contained in:
tanglong 2025-10-19 11:25:07 +08:00
parent 708541ea74
commit 1eb81a7c27
4 changed files with 69 additions and 38 deletions

View File

@ -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, 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, 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, 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
} }
} }
}; };

View File

@ -31,33 +31,36 @@ namespace Wpf_AiSportsMicrospace.MyUserControl
public partial class PopSilder : UserControl public partial class PopSilder : UserControl
{ {
private List<double> _musicBeats = new List<double>() //private List<double> _musicBeats = new List<double>()
{ //{
0.545,1.09,1.635,2.18,2.725,3.27,3.815,4.36,4.905,5.45, // 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, // 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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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, // //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,108.455
}; //};
private Storyboard _marginStoryboard; private Storyboard _marginStoryboard;
private ThicknessAnimation _marginAnimation; private ThicknessAnimation _marginAnimation;
private TimedEventTrigger _trigger; private TimedEventTrigger _trigger;
private bool _isMiss = true; private bool _isMiss = true;
private List<double> _musicBeats;
public bool IsMiss public bool IsMiss
{ {
get => _isMiss; get => _isMiss;
@ -66,9 +69,25 @@ namespace Wpf_AiSportsMicrospace.MyUserControl
_isMiss = value; _isMiss = value;
} }
} }
public List<double> MusicBeats
{
get => _musicBeats;
set
{
_musicBeats = value;
InitMusicBeats();
}
}
public PopSilder() public PopSilder()
{ {
InitializeComponent(); InitializeComponent();
//InitMusicBeats();
}
private void InitMusicBeats()
{
double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]); double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]);
double startMargin = _musicBeats[0] * 200; double startMargin = _musicBeats[0] * 200;
ani.Margin = new Thickness(startMargin, 0, 0, 0); ani.Margin = new Thickness(startMargin, 0, 0, 0);
@ -93,9 +112,8 @@ namespace Wpf_AiSportsMicrospace.MyUserControl
StackPanel.Children.Add(grid); StackPanel.Children.Add(grid);
ani.Children.Add(StackPanel); ani.Children.Add(StackPanel);
} }
} }
private void InitializeMarginAnimation() private void InitializeMarginAnimation()
{ {
double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]) + 1; double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]) + 1;

View File

@ -36,7 +36,7 @@
TextAlignment="Center" TextAlignment="Center"
/> />
</Grid> </Grid>
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,160,0,0"> <StackPanel VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,100,0,0">
<local:WxProgressBar x:Name="PkBar"/> <local:WxProgressBar x:Name="PkBar"/>
</StackPanel> </StackPanel>

View File

@ -62,18 +62,22 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
DrawCirclesWithText(); DrawCirclesWithText();
// 播放音乐 // 播放音乐
PlayMusic("raisehand.mp3"); PlayMusic("raisehand.mp3");
PkBar.LeftProgress = 0.5;
Random rnd = new Random(); popSilder1.MusicBeats = _musicJumpRopeContext.MusicBeats["1"];
popSilder2.MusicBeats = _musicJumpRopeContext.MusicBeats["1"];
// 模拟 20 次随机更新 //Random rnd = new Random();
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线程 //// 模拟 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) private void UserControl_Unloaded(object sender, RoutedEventArgs e)
@ -259,6 +263,9 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
// 播放背景音乐(循环) // 播放背景音乐(循环)
Utils.PlayBackgroundMusic("1.MP3", true); Utils.PlayBackgroundMusic("1.MP3", true);
popSilder1.StartMarginAnimation();
popSilder2.StartMarginAnimation();
for (int i = seconds; i >= 0; i--) for (int i = seconds; i >= 0; i--)
{ {
countdownText.Text = i.ToString(); countdownText.Text = i.ToString();
@ -481,7 +488,7 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
{ {
_musicJumpRopeContext.UserBeatSyncList[indexCopy]++; _musicJumpRopeContext.UserBeatSyncList[indexCopy]++;
_musicBeatTextBlock[indexCopy].Text = $"卡点 x{_musicJumpRopeContext.UserBeatSyncList[indexCopy]}"; _musicBeatTextBlock[indexCopy].Text = $"卡点 x{_musicJumpRopeContext.UserBeatSyncList[indexCopy]}";
if(indexCopy == 0) if (indexCopy == 0)
{ {
popSilder1.IsMiss = false; popSilder1.IsMiss = false;
} }
@ -489,6 +496,12 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
{ {
popSilder2.IsMiss = false; 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) //if (indexCopy == 0)
// LeftBeats.SetSelected(currentSecond, true); // LeftBeats.SetSelected(currentSecond, true);
//else //else