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

This commit is contained in:
monitor1394
2023-07-19 13:23:57 +08:00
parent f5e8ba4082
commit b27f0ec6ec
3 changed files with 26 additions and 5 deletions

View File

@@ -538,7 +538,8 @@ namespace XCharts.Runtime
return 0;
}
public float GetInteractionRadius(float radius){
public float GetInteractionRadius(float radius)
{
if (m_Enable && m_Interaction.enable)
return m_Interaction.GetRadius(radius);
@@ -550,5 +551,15 @@ namespace XCharts.Runtime
{
return enable && m_FadeOut.context.end;
}
public bool IsFadeIn()
{
return enable && m_FadeIn.context.start;
}
public bool IsFadeOut()
{
return enable && m_FadeOut.context.start;
}
}
}

View File

@@ -33,7 +33,11 @@ namespace XCharts.Runtime
public void SetValue(ref bool needInteract, float size)
{
if (m_TargetValue != size)
if (m_PreviousValue == float.NaN)
{
m_PreviousValue = size;
}
else if (m_TargetValue != size)
{
needInteract = true;
m_UpdateFlag = true;
@@ -100,7 +104,9 @@ namespace XCharts.Runtime
{
if (!IsValueEnable() || m_PreviousValue == 0 || animationDuration == 0)
return false;
if (m_UpdateFlag)
if (float.IsNaN(m_TargetValue))
return false;
if (m_UpdateFlag && !float.IsNaN(m_PreviousValue))
{
var time = Time.time - m_UpdateTime;
var total = animationDuration / 1000;
@@ -176,7 +182,9 @@ namespace XCharts.Runtime
{
if (!IsValueEnable() || animationDuration == 0)
return false;
if (m_UpdateFlag)
if (float.IsNaN(m_TargetValue))
return false;
if (m_UpdateFlag && !float.IsNaN(m_PreviousValue))
{
var time = Time.time - m_UpdateTime;
var total = animationDuration / 1000;
@@ -205,6 +213,7 @@ namespace XCharts.Runtime
{
m_UpdateFlag = false;
m_ValueEnable = false;
m_TargetValue = float.NaN;
m_PreviousValue = float.NaN;
m_TargetColor = ColorUtil.clearColor32;
m_TargetToColor = ColorUtil.clearColor32;

View File

@@ -343,7 +343,8 @@ namespace XCharts.Runtime
var color = ColorUtil.clearColor32;
var toColor = ColorUtil.clearColor32;
var interactDuration = serie.animation.GetInteractionDuration();
var interactEnable = serie.animation.enable && serie.animation.interaction.enable;
var interactEnable = serie.animation.enable && serie.animation.interaction.enable
&& !serie.animation.IsFadeIn() && !serie.animation.IsFadeOut();
var data = serie.data;
serie.animation.InitProgress(0, 360);
for (int n = 0; n < data.Count; n++)