修复BarChartonSerieEnteronSerieExit回调无效的问题

This commit is contained in:
monitor1394
2023-08-02 08:31:58 +08:00
parent e3e01587ab
commit 43ba7d47c5
4 changed files with 19 additions and 6 deletions

View File

@@ -71,9 +71,11 @@ slug: /changelog
* 重构和完善动画系统,增加`新增动画``交互动画`的支持
* 完善`PieChart`的动画交互表现
* 增加`Symbol``EmptyTriangle``EmptyDiamond``Plus``Minus`四种新标记
日志详情:
* (2023.08.02) 修复`BarChart``onSerieEnter``onSerieExit`回调无效的问题
* (2023.08.02) 增加`Symbol``Plus`加号和`Minus`减号的支持
* (2023.07.31) 增加`Symbol``EmptyTriangle``EmptyDiamond`的支持,优化`Symbol`表现效果
* (2023.07.31) 优化`Line`的默认配置效果

View File

@@ -502,7 +502,9 @@ namespace XCharts.Runtime
var axis = component as Axis;
if (axis.gridIndex == gridIndex && axis.IsCategory())
{
dataIndex = axis.context.dataZoomStartIndex + (int)axis.context.pointerValue;
dataIndex = double.IsNaN(axis.context.pointerValue)
? axis.context.dataZoomStartIndex
: axis.context.dataZoomStartIndex + (int)axis.context.pointerValue;
category = axis.GetData(dataIndex);
return true;
}

View File

@@ -192,8 +192,9 @@ namespace XCharts.Runtime
CheckPainter();
CheckRefreshChart();
Internal_CheckAnimation();
foreach (var handler in m_SerieHandlers) handler.Update();
foreach (var handler in m_SerieHandlers) handler.BeforeUpdate();
foreach (var handler in m_ComponentHandlers) handler.Update();
foreach (var handler in m_SerieHandlers) handler.Update();
m_DebugInfo.Update();
if (m_OnUpdate != null)
m_OnUpdate();

View File

@@ -15,6 +15,7 @@ namespace XCharts.Runtime
public virtual void InitComponent() { }
public virtual void RemoveComponent() { }
public virtual void CheckComponent(StringBuilder sb) { }
public virtual void BeforeUpdate() { }
public virtual void Update() { }
public virtual void DrawBase(VertexHelper vh) { }
public virtual void DrawSerie(VertexHelper vh) { }
@@ -66,6 +67,8 @@ namespace XCharts.Runtime
private float[] m_LastRadius = new float[2] { 0, 0 };
private float[] m_LastCenter = new float[2] { 0, 0 };
private bool m_LastPointerEnter;
private int m_LastPointerDataIndex;
public T serie { get; internal set; }
public GameObject labelObject { get { return m_SerieLabelRoot; } }
@@ -78,6 +81,12 @@ namespace XCharts.Runtime
AnimationStyleHelper.UpdateSerieAnimation(serie);
}
public override void BeforeUpdate()
{
m_LastPointerEnter = serie.context.pointerEnter;
m_LastPointerDataIndex = serie.context.pointerItemDataIndex;
}
public override void Update()
{
CheckConfigurationChanged();
@@ -163,12 +172,11 @@ namespace XCharts.Runtime
private void UpdateSerieContextInternal()
{
var lastEnter = serie.context.pointerEnter;
var lastDataIndex = serie.context.pointerItemDataIndex;
UpdateSerieContext();
m_ForceUpdateSerieContext = false;
if (lastEnter != serie.context.pointerEnter || lastDataIndex != serie.context.pointerItemDataIndex)
if (m_LastPointerEnter != serie.context.pointerEnter || m_LastPointerDataIndex != serie.context.pointerItemDataIndex)
{
if (chart.onSerieEnter != null || chart.onSerieExit != null || serie.onEnter != null || serie.onExit != null)
{
var dataIndex = GetPointerItemDataIndex();
@@ -182,7 +190,7 @@ namespace XCharts.Runtime
}
else
{
data.dataIndex = lastDataIndex;
data.dataIndex = m_LastPointerDataIndex;
if (serie.onExit != null) serie.onExit(data);
if (chart.onSerieExit != null) chart.onSerieExit(data);
}