增加AxisonLabelClick回调事件

This commit is contained in:
monitor1394
2025-03-27 08:31:21 +08:00
parent ad3bc75d7c
commit da360693e6
4 changed files with 81 additions and 0 deletions

View File

@@ -115,6 +115,13 @@ namespace XCharts.Runtime
public AxisContext context = new AxisContext();
private Action<Vector3, int, string> m_OnLabelClick;
/// <summary>
/// Callback function when click on the label. Parameters: clickPos, labelIndex, labelName.
/// ||点击文本标签回调函数。参数clickPos, labelIndex, labelName。
/// </summary>
[Since("v3.15.0")]
public Action<Vector3, int, string> onLabelClick { internal get { return m_OnLabelClick; } set { m_OnLabelClick = value; } }
/// <summary>
/// Whether to show axis.
/// ||是否显示坐标轴。

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using XCharts.Runtime;
using XUGL;
@@ -32,6 +33,33 @@ namespace XCharts
protected virtual Orient orient { get; set; }
public override void OnPointerClick(PointerEventData eventData)
{
if (component.onLabelClick == null) return;
var labelObjects = component.context.labelObjectList;
for (int i = 0; i < labelObjects.Count; i++)
{
var label = labelObjects[i];
if (label == null) continue;
if (label.InRect(chart.pointerPos))
{
component.onLabelClick.Invoke(chart.pointerPos, i, label.text.text.text);
break;
}
}
}
// public override void DrawTop(VertexHelper vh)
// {
// var color = Color.red;
// color.a = 0.5f;
// foreach (var label in component.context.labelObjectList)
// {
// if (label == null) continue;
// UGL.DrawRectangle(vh, label.rect, color);
// }
// }
protected virtual void UpdatePointerValue(Axis axis)
{
var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex);