完善Pie饼图的交互动画效果

This commit is contained in:
monitor1394
2023-07-27 07:17:37 +08:00
parent 758d578ad2
commit 0c09d40654
7 changed files with 37 additions and 24 deletions

View File

@@ -10,20 +10,24 @@ namespace XCharts.Runtime
[System.Serializable] [System.Serializable]
public class MLValue : ChildComponent public class MLValue : ChildComponent
{ {
/// <summary>
/// the type of value.
/// |数值类型。
/// </summary>
public enum Type public enum Type
{ {
/// <summary> /// <summary>
/// Percent form. /// Percent value form.
/// |百分比形式。 /// |百分比形式。
/// </summary> /// </summary>
Percent, Percent,
/// <summary> /// <summary>
/// Absolute form. /// Absolute value form.
/// |绝对值形式。 /// |绝对值形式。
/// </summary> /// </summary>
Absolute, Absolute,
/// <summary> /// <summary>
/// Extra form. /// Extra value form.
/// |额外形式。 /// |额外形式。
/// </summary> /// </summary>
Extra Extra
@@ -34,18 +38,24 @@ namespace XCharts.Runtime
public Type type { get { return m_Type; } set { m_Type = value; } } public Type type { get { return m_Type; } set { m_Type = value; } }
public float value { get { return m_Value; } set { m_Value = value; } } public float value { get { return m_Value; } set { m_Value = value; } }
public MLValue(Type type, float value)
{
m_Type = type;
m_Value = value;
}
public MLValue(float value) public MLValue(float value)
{ {
m_Type = Type.Percent; m_Type = Type.Percent;
m_Value = value; m_Value = value;
} }
public MLValue(Type type, float value)
{
m_Type = type;
m_Value = value;
}
/// <summary>
/// Get the value by type.
/// |根据类型获取值。
/// </summary>
/// <param name="total">默认值</param>
/// <returns></returns>
public float GetValue(float total) public float GetValue(float total)
{ {
switch (m_Type) switch (m_Type)

View File

@@ -27,7 +27,7 @@ namespace XCharts.Runtime
m_LastCheckContextFlag = needCheck; m_LastCheckContextFlag = needCheck;
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerEnter = false; serie.context.pointerEnter = false;
serie.interact.SetValue(ref needAnimation1, lineWidth, false); serie.interact.SetValue(ref needAnimation1, lineWidth);
foreach (var serieData in serie.data) foreach (var serieData in serie.data)
{ {
var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
@@ -53,7 +53,7 @@ namespace XCharts.Runtime
if (m_LegendEnter) if (m_LegendEnter)
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];

View File

@@ -27,7 +27,7 @@ namespace XCharts.Runtime
m_LastCheckContextFlag = needCheck; m_LastCheckContextFlag = needCheck;
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerEnter = false; serie.context.pointerEnter = false;
serie.interact.SetValue(ref needAnimation1, lineWidth, false); serie.interact.SetValue(ref needAnimation1, lineWidth);
foreach (var serieData in serie.data) foreach (var serieData in serie.data)
{ {
var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
@@ -53,7 +53,7 @@ namespace XCharts.Runtime
if (m_LegendEnter) if (m_LegendEnter)
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];

View File

@@ -61,7 +61,7 @@ namespace XCharts.Runtime
if (m_LegendEnter) if (m_LegendEnter)
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];
@@ -73,7 +73,7 @@ namespace XCharts.Runtime
else if (serie.context.isTriggerByAxis) else if (serie.context.isTriggerByAxis)
{ {
serie.context.pointerEnter = false; serie.context.pointerEnter = false;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];
@@ -116,7 +116,7 @@ namespace XCharts.Runtime
needInteract = true; needInteract = true;
} }
if (serie.context.pointerItemDataIndex >= 0) if (serie.context.pointerItemDataIndex >= 0)
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
else else
serie.interact.SetValue(ref needInteract, lineWidth); serie.interact.SetValue(ref needInteract, lineWidth);
} }

View File

@@ -27,7 +27,7 @@ namespace XCharts.Runtime
m_LastCheckContextFlag = needCheck; m_LastCheckContextFlag = needCheck;
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerEnter = false; serie.context.pointerEnter = false;
serie.interact.SetValue(ref needAnimation1, lineWidth, false); serie.interact.SetValue(ref needAnimation1, lineWidth);
foreach (var serieData in serie.data) foreach (var serieData in serie.data)
{ {
var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
@@ -53,7 +53,7 @@ namespace XCharts.Runtime
if (m_LegendEnter) if (m_LegendEnter)
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];

View File

@@ -46,7 +46,7 @@ namespace XCharts.Runtime
m_LastCheckContextFlag = needCheck; m_LastCheckContextFlag = needCheck;
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerEnter = false; serie.context.pointerEnter = false;
serie.interact.SetValue(ref needAnimation1, lineWidth, false); serie.interact.SetValue(ref needAnimation1, lineWidth);
foreach (var serieData in serie.data) foreach (var serieData in serie.data)
{ {
var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
@@ -72,7 +72,7 @@ namespace XCharts.Runtime
if (m_LegendEnter) if (m_LegendEnter)
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];
@@ -84,7 +84,7 @@ namespace XCharts.Runtime
else if (serie.context.isTriggerByAxis) else if (serie.context.isTriggerByAxis)
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.GetWidth(lineWidth)); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
for (int i = 0; i < serie.dataCount; i++) for (int i = 0; i < serie.dataCount; i++)
{ {
var serieData = serie.data[i]; var serieData = serie.data[i];
@@ -119,7 +119,7 @@ namespace XCharts.Runtime
{ {
serie.context.pointerEnter = true; serie.context.pointerEnter = true;
serie.context.pointerItemDataIndex = serieData.index; serie.context.pointerItemDataIndex = serieData.index;
serie.interact.SetValue(ref needInteract, lineWidth, true); serie.interact.SetValue(ref needInteract, serie.animation.interaction.GetWidth(lineWidth));
} }
} }
if (lastIndex != serie.context.pointerItemDataIndex) if (lastIndex != serie.context.pointerItemDataIndex)

View File

@@ -127,7 +127,7 @@ namespace XCharts.Runtime
if (m_LegendEnter) if (m_LegendEnter)
{ {
serieData.context.highlight = true; serieData.context.highlight = true;
serieData.interact.SetValue(ref needInteract, symbolSize, serieData.context.highlight); serieData.interact.SetValue(ref needInteract, serie.animation.interaction.GetRadius(symbolSize));
} }
else else
{ {
@@ -164,7 +164,10 @@ namespace XCharts.Runtime
} }
} }
} }
serieData.interact.SetValue(ref needInteract, symbolSize, serieData.context.highlight); if (serieData.context.highlight)
serieData.interact.SetValue(ref needInteract, serie.animation.interaction.GetRadius(symbolSize));
else
serieData.interact.SetValue(ref needInteract, symbolSize);
} }
} }
break; break;