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

View File

@ -31,33 +31,36 @@ namespace Wpf_AiSportsMicrospace.MyUserControl
public partial class PopSilder : UserControl
{
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,
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<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,
// 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<double> _musicBeats;
public bool IsMiss
{
get => _isMiss;
@ -66,9 +69,25 @@ namespace Wpf_AiSportsMicrospace.MyUserControl
_isMiss = value;
}
}
public List<double> 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);
@ -93,9 +112,8 @@ namespace Wpf_AiSportsMicrospace.MyUserControl
StackPanel.Children.Add(grid);
ani.Children.Add(StackPanel);
}
}
private void InitializeMarginAnimation()
{
double time = Math.Floor(_musicBeats[_musicBeats.Count - 1]) + 1;

View File

@ -36,7 +36,7 @@
TextAlignment="Center"
/>
</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"/>
</StackPanel>

View File

@ -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