update:跳远动画

This commit is contained in:
ltx 2025-12-10 17:23:23 +08:00
parent ba381d50bc
commit 8ae8397bb2
2 changed files with 23 additions and 4 deletions

View File

@ -23,8 +23,9 @@
HorizontalAlignment="Left" VerticalAlignment="Top" Margin="1242,301,0,0" Height="438" Width="360"/>
<Image
x:Name="centerImg4"
Visibility="Hidden"
gif:ImageBehavior.AnimatedSource="/Resources/Img/test_img/jump_long/jumping.gif"
gif:ImageBehavior.RepeatBehavior="Forever"
gif:ImageBehavior.RepeatBehavior="0"
gif:ImageBehavior.AnimateInDesignMode="True"
HorizontalAlignment="Left" VerticalAlignment="Top" Margin="824,72,0,0" Width="824" Height="610"/>
<Grid Width="1920" Height="1080" Background="#80000000" x:Name="TipBox" Opacity="0">

View File

@ -22,6 +22,7 @@ using Wpf_AiSportsMicrospace.Common;
using Wpf_AiSportsMicrospace.Enum;
using Wpf_AiSportsMicrospace.MyUserControl;
using Wpf_AiSportsMicrospace.Views;
using WpfAnimatedGif;
using Yztob.AiSports.Inferences.Abstractions;
using Yztob.AiSports.Inferences.Implement;
using Yztob.AiSports.Inferences.Things;
@ -107,7 +108,7 @@ namespace Views.JumpLong
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3 && _sportType == 0) //举手完成 开始跳远检测
{
Utils.PlayBackgroundMusic("countdown_3.mp3", false);
_sportType = 1;
StartSport();
}
@ -207,13 +208,18 @@ namespace Views.JumpLong
private void OnSportTick(int counts, int times)
{
var ts = TimeSpan.FromSeconds(times);
_ = Dispatcher.BeginInvoke(() =>
_ = Dispatcher.BeginInvoke(async () =>
{
//sportCounts.Content = _sport.GetFormatCounts(); //counts.ToString();
//sportTimes.Content = _sport.GetFormatTimes();//ts.ToString(@"mm\'ss\""");
var counts = _sport.GetFormatCounts();
if (double.Parse(counts[..^1]) > 0 && _sportType == 1) //正向跳远时候&&处于测试阶段时候触发更新
{
ImageBehavior.SetRepeatBehavior(centerImg4, new RepeatBehavior(2));
ImageBehavior.SetRepeatBehavior(centerImg4, new RepeatBehavior(1));
ImageBehavior.GetAnimationController(centerImg4).Play();
await Task.Delay(800);
_sport.Stop();//关闭运动
_mainWin.FacialRecognitionEvent -= this.HumanPredicting;
count.Text = counts;
@ -250,10 +256,18 @@ namespace Views.JumpLong
//centerImg3.Opacity = 1;
_sportType = 2;
RankingGrid.BeginAnimation(UIElement.OpacityProperty, fadeInAnimation);
ImageBehavior.GetAnimationController(centerImg4).Pause();
//_mainWin.WebcamClient.OnExtractFrame -= this.OnFrameExtracted;
for (int i = 12; i >= 0; i--)
{
countDown.Text = i.ToString() + "s";
if(i == 8)
{
centerImg4.Visibility = Visibility.Hidden;
centerImg3.Visibility = Visibility.Visible;
}
if (i == 1)
{
RankingGrid.BeginAnimation(UIElement.OpacityProperty, fadeInAnimation1);
@ -510,7 +524,10 @@ namespace Views.JumpLong
private void StartSport()
{
Utils.PlayBackgroundMusic("countdown_3.mp3", false);
_mainWin.ShowCountDownAnimation();
centerImg3.Visibility = Visibility.Hidden;
centerImg4.Visibility = Visibility.Visible;
//if (_sport?.IsCounting == true)
//_mainWin.WebcamClient.OnExtractFrame += this.OnFrameExtracted;
_sport.Start();
@ -520,6 +537,7 @@ namespace Views.JumpLong
_mainWin.FacialRecognitionEvent += this.HumanPredicting;
}
private WriteableBitmap _videoBitmap;
private int _lastFrameNumber = -1;
private async void OnFrameExtracted(VideoFrame frame)