From 87d76687682271d65522cc9b163203b6fc6af115 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Sat, 25 Jul 2020 19:20:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`LineChart`=E6=B8=90=E5=87=BA?= =?UTF-8?q?=E5=8A=A8=E7=94=BB=E7=BB=98=E5=88=B6=E5=BC=82=E5=B8=B8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98#79?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/XCharts/CHANGELOG-EN.md | 3 ++- Assets/XCharts/CHANGELOG.md | 1 + Assets/XCharts/Runtime/Component/Sub/SerieAnimation.cs | 5 +++++ Assets/XCharts/Runtime/Internal/CoordinateChart.cs | 4 ++-- .../XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs | 8 ++++++-- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Assets/XCharts/CHANGELOG-EN.md b/Assets/XCharts/CHANGELOG-EN.md index 092db02d..a5312e5b 100644 --- a/Assets/XCharts/CHANGELOG-EN.md +++ b/Assets/XCharts/CHANGELOG-EN.md @@ -1,7 +1,8 @@ # 更新日志 -* (2020.07.25) Fixed problem with gradual discoloration on `LiquidChart` at `100%`#80 +* (2020.07.25) Fixed a problem with `LineChart` emerging abnormal in animation drawing#79 +* (2020.07.25) Fixed a problem with gradual discoloration on `LiquidChart` at `100%`#80 * (2020.07.25) Added `RadarChart` support for `formatter` of `Tooltip`#77 * (2020.07.23) Added `RingChart` ring gradient support#75 * (2020.07.21) Added `formatter` of `AxisLabel` and `SerieLabel` to configure numeric formatting separately. diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index 76e2e138..881161af 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -1,6 +1,7 @@ # 更新日志 +* (2020.07.25) 修复`LineChart`渐出动画绘制异常的问题#79 * (2020.07.25) 修复`LiquidChart`在`100%`时渐变色会失效的问题#80 * (2020.07.25) 增加`RadarChart`对`Tooltip`的`formatter`支持#77 * (2020.07.23) 增加`RingChart`环形渐变支持#75 diff --git a/Assets/XCharts/Runtime/Component/Sub/SerieAnimation.cs b/Assets/XCharts/Runtime/Component/Sub/SerieAnimation.cs index 0a6e006d..8099c4d0 100644 --- a/Assets/XCharts/Runtime/Component/Sub/SerieAnimation.cs +++ b/Assets/XCharts/Runtime/Component/Sub/SerieAnimation.cs @@ -279,6 +279,11 @@ namespace XCharts return !m_Enable || m_IsEnd || (m_CurrDataProgress > m_DestDataProgress && m_CurrDetailProgress > m_DestDetailProgress); } + public bool IsInFadeOut() + { + return m_FadeOut; + } + public bool IsInDelay() { if (m_FadeOut) return (fadeOutDelay > 0 && Time.time - startTime < fadeOutDelay / 1000); diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart.cs index 14f7dfbb..e382de32 100644 --- a/Assets/XCharts/Runtime/Internal/CoordinateChart.cs +++ b/Assets/XCharts/Runtime/Internal/CoordinateChart.cs @@ -276,7 +276,7 @@ namespace XCharts var serieData = serie.data[n]; var xdata = serieData.GetData(0, xAxis.inverse); var ydata = serieData.GetData(1, yAxis.inverse); - var symbol = SerieHelper.GetSerieSymbol(serie,serieData); + var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbolSize = symbol.GetSize(serieData == null ? null : serieData.data); if (Mathf.Abs(xValue - xdata) / xRate < symbolSize && Mathf.Abs(yValue - ydata) / yRate < symbolSize) @@ -1406,7 +1406,7 @@ namespace XCharts if (serieData.labelObject == null) continue; var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.highlighted); serieData.index = j; - if ((serieLabel.show || serieData.iconStyle.show)) + if ((serieLabel.show || serieData.iconStyle.show) && j < serie.dataPoints.Count) { var pos = serie.dataPoints[j]; diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs index 43707e32..5f20669a 100644 --- a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs +++ b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs @@ -1116,8 +1116,11 @@ namespace XCharts { if (smoothStartPosDn != Vector3.zero && smoothStartPosUp != Vector3.zero) { - CheckClipAndDrawTriangle(vh, smoothStartPosUp, startUp, lp, lineColor, serie.clip); - CheckClipAndDrawTriangle(vh, smoothStartPosDn, startDn, lp, lineColor, serie.clip); + if (!serie.animation.IsInFadeOut()) + { + CheckClipAndDrawTriangle(vh, smoothStartPosUp, startUp, lp, lineColor, serie.clip); + CheckClipAndDrawTriangle(vh, smoothStartPosDn, startDn, lp, lineColor, serie.clip); + } smoothPoints.Add(smoothStartPosUp); smoothDownPoints.Add(smoothStartPosDn); } @@ -1352,6 +1355,7 @@ namespace XCharts for (int i = 1; i < linePointList.Count; i++) { ep = linePointList[i]; + if (serie.animation.CheckDetailBreak(ep, isYAxis)) return false; CheckClipAndDrawLine(vh, sp, ep, lineWidth, lineColor, serie.clip); sp = ep; }