增加RadarChart、ScatterChart和HeatmapChart的起始动画效果

This commit is contained in:
monitor1394
2019-10-14 19:22:30 +08:00
parent 665f8ea2b8
commit dd5c6a2ffe
4 changed files with 49 additions and 1 deletions

View File

@@ -133,6 +133,8 @@ namespace XCharts
var borderColor = serie.itemStyle.opacity > 0 ? serie.itemStyle.borderColor : Color.clear;
borderColor.a *= serie.itemStyle.opacity;
serie.dataPoints.Clear();
serie.animation.InitProgress(1, 0, xCount);
var animationIndex = serie.animation.GetCurrIndex();
for (int i = 0; i < xCount; i++)
{
for (int j = 0; j < yCount; j++)
@@ -157,6 +159,7 @@ namespace XCharts
if (!m_VisualMap.IsInSelectedValue(value)) continue;
color = m_VisualMap.GetColor(value);
}
if(animationIndex>= 0 && i> animationIndex) continue;
serieData.canShowLabel = true;
var emphasis = (m_Tooltip.show && i == (int)m_Tooltip.xValues[0] && j == (int)m_Tooltip.yValues[0])
|| m_VisualMap.rtSelectedIndex > 0;
@@ -175,6 +178,13 @@ namespace XCharts
}
}
}
if (!serie.animation.IsFinish())
{
float duration = serie.animation.duration > 0 ? (float)serie.animation.duration / 1000 : 1;
float speed = xCount / duration;
serie.animation.CheckProgress(Time.deltaTime * speed);
RefreshChart();
}
}
protected void DrawVisualMap(VertexHelper vh)

View File

@@ -7,7 +7,7 @@ namespace XCharts
{
public partial class CoordinateChart
{
protected void DrawScatterSerie(VertexHelper vh,int colorIndex, Serie serie)
protected void DrawScatterSerie(VertexHelper vh, int colorIndex, Serie serie)
{
var yAxis = m_YAxises[serie.axisIndex];
var xAxis = m_XAxises[serie.axisIndex];
@@ -16,6 +16,8 @@ namespace XCharts
int maxCount = serie.maxShow > 0 ?
(serie.maxShow > serie.dataCount ? serie.dataCount : serie.maxShow)
: serie.dataCount;
serie.animation.InitProgress(1, 0, 1);
var rate = serie.animation.GetCurrRate();
for (int n = serie.minShow; n < maxCount; n++)
{
var serieData = serie.GetDataList(m_DataZoom)[n];
@@ -37,6 +39,7 @@ namespace XCharts
{
symbolSize = serie.symbol.GetSize(datas);
}
symbolSize *= rate;
if (symbolSize > 100) symbolSize = 100;
if (serie.type == SerieType.EffectScatter)
{
@@ -53,6 +56,13 @@ namespace XCharts
DrawSymbol(vh, serie.symbol.type, symbolSize, 3, pos, color);
}
}
if (!serie.animation.IsFinish())
{
float duration = serie.animation.duration > 0 ? (float)serie.animation.duration / 1000 : 1;
float speed = 1 / duration;
serie.animation.CheckProgress(Time.deltaTime * speed);
RefreshChart();
}
}
}
}