From 910b9194ac2a292c899d39dbc0ce41affc7855e4 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Sun, 3 Sep 2023 11:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DScatter=E6=95=A3=E7=82=B9?= =?UTF-8?q?=E5=9B=BE=E6=B8=90=E5=87=BA=E5=8A=A8=E7=94=BB=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/Component/Animation/AnimationInfo.cs | 12 +++++++++--- Runtime/Component/Animation/AnimationStyle.cs | 19 ++++++++++--------- Runtime/Serie/Scatter/BaseScatterHandler.cs | 15 +++++++++------ 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Runtime/Component/Animation/AnimationInfo.cs b/Runtime/Component/Animation/AnimationInfo.cs index 5a40df46..bffabfef 100644 --- a/Runtime/Component/Animation/AnimationInfo.cs +++ b/Runtime/Component/Animation/AnimationInfo.cs @@ -309,14 +309,20 @@ namespace XCharts.Runtime internal float CheckItemProgress(int dataIndex, float destProgress, ref bool isEnd, float startProgress, bool m_UnscaledTime) { + if (m_Reverse) + { + var temp = startProgress; + startProgress = destProgress; + destProgress = temp; + } var currHig = GetDataCurrProgress(dataIndex, startProgress, destProgress, ref isEnd); if (IsFinish()) { - return reverse ? startProgress : destProgress; + return destProgress; } else if (IsInDelay() || IsInIndexDelay(dataIndex)) { - return reverse ? destProgress : startProgress; + return startProgress; } else if (context.pause) { @@ -326,7 +332,7 @@ namespace XCharts.Runtime { var duration = GetCurrAnimationDuration(dataIndex); var delta = (destProgress - startProgress) / duration * (m_UnscaledTime ? Time.unscaledDeltaTime : Time.deltaTime); - currHig = currHig + (reverse ? -delta : delta); + currHig += delta; if (reverse) { if ((destProgress > 0 && currHig <= 0) || (destProgress < 0 && currHig >= 0)) diff --git a/Runtime/Component/Animation/AnimationStyle.cs b/Runtime/Component/Animation/AnimationStyle.cs index dbe3d2cd..efcb75f8 100644 --- a/Runtime/Component/Animation/AnimationStyle.cs +++ b/Runtime/Component/Animation/AnimationStyle.cs @@ -350,13 +350,9 @@ namespace XCharts.Runtime #endif if (!m_Enable) return true; - foreach (var animation in animations) - { - if (animation.context.start && animation.context.end) - { - return true; - } - } + var animation = activedAnimation; + if (animation != null && animation.context.end) + return true; if (IsSerieAnimation()) { if (m_FadeOut.context.start) return m_FadeOut.context.currProgress <= m_FadeOut.context.destProgress; @@ -365,7 +361,8 @@ namespace XCharts.Runtime } else if (IsDataAnimation()) { - return false; + if (animation == null) return true; + else return animation.context.end; } return true; } @@ -462,7 +459,11 @@ namespace XCharts.Runtime { isEnd = false; var anim = activedAnimation; - if (anim == null) return destProgress; + if (anim == null) + { + isEnd = true; + return destProgress; + } return anim.CheckItemProgress(dataIndex, destProgress, ref isEnd, startProgress, m_UnscaledTime); } diff --git a/Runtime/Serie/Scatter/BaseScatterHandler.cs b/Runtime/Serie/Scatter/BaseScatterHandler.cs index 21a264a2..430f0bb0 100644 --- a/Runtime/Serie/Scatter/BaseScatterHandler.cs +++ b/Runtime/Serie/Scatter/BaseScatterHandler.cs @@ -134,6 +134,7 @@ namespace XCharts.Runtime var rate = serie.animation.GetCurrRate(); var dataChangeDuration = serie.animation.GetChangeDuration(); var interactDuration = serie.animation.GetInteractionDuration(); + var isFadeOut = serie.animation.IsFadeOut(); var unscaledTime = serie.animation.unscaledTime; var dataChanging = false; var interacting = false; @@ -157,8 +158,8 @@ namespace XCharts.Runtime SerieHelper.GetItemColor(out color, out toColor, out emptyColor, serie, serieData, chart.theme, colorIndex, state); SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, state); - double xValue = serieData.GetCurrData(0, 0, dataChangeDuration, unscaledTime, xAxis.inverse); - double yValue = serieData.GetCurrData(1, 0, dataChangeDuration, unscaledTime, yAxis.inverse); + double xValue = serieData.GetCurrData(0, 0, isFadeOut ? 0 : dataChangeDuration, unscaledTime, xAxis.inverse); + double yValue = serieData.GetCurrData(1, 0, isFadeOut ? 0 : dataChangeDuration, unscaledTime, yAxis.inverse); if (serieData.IsDataChanged()) dataChanging = true; @@ -177,13 +178,15 @@ namespace XCharts.Runtime serieData.context.position = pos; var datas = serieData.data; var symbolSize = 0f; - if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration)) + if (isFadeOut || !serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration)) { symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme.serie.scatterSymbolSize, state); - serieData.interact.SetValue(ref interacting, symbolSize, true); - serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration); + if (!isFadeOut) + { + serieData.interact.SetValue(ref interacting, symbolSize, true); + serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration); + } } - symbolSize *= rate; if (isEffectScatter)