mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-14 20:00:09 +00:00
增加Animation的Interaction交互动画配置支持
This commit is contained in:
@@ -171,6 +171,7 @@ import APITable from '@site/src/components/APITable';
|
||||
- [AnimationFadeIn](#animationfadein)
|
||||
- [AnimationFadeOut](#animationfadeout)
|
||||
- [AnimationInfo](#animationinfo)
|
||||
- [AnimationInteraction](#animationinteraction)
|
||||
- [BaseSerie](#baseserie)
|
||||
- [ChartText](#charttext)
|
||||
- [ChildComponent](#childcomponent)
|
||||
@@ -248,7 +249,7 @@ Fade out animation.
|
||||
|
||||
## AnimationInfo
|
||||
|
||||
> XCharts.Runtime.AnimationInfo / Subclasses: [AnimationFadeIn](#animationfadein), [AnimationFadeOut](#animationfadeout), [AnimationChange](#animationchange), [AnimationAddition](#animationaddition)
|
||||
> XCharts.Runtime.AnimationInfo / Subclasses: [AnimationFadeIn](#animationfadein), [AnimationFadeOut](#animationfadeout), [AnimationChange](#animationchange), [AnimationAddition](#animationaddition), [AnimationInteraction](#animationinteraction)
|
||||
|
||||
> Since `v3.8.0`
|
||||
|
||||
@@ -270,6 +271,28 @@ the animation info.
|
||||
</APITable>
|
||||
```
|
||||
|
||||
## AnimationInteraction
|
||||
|
||||
> XCharts.Runtime.AnimationInteraction : [AnimationInfo](#animationinfo)
|
||||
|
||||
> Since `v3.8.0`
|
||||
|
||||
Interactive animation of charts.
|
||||
|
||||
```mdx-code-block
|
||||
<APITable name="AnimationInteraction">
|
||||
```
|
||||
|
||||
|
||||
|field|default|since|comment|
|
||||
|--|--|--|--|
|
||||
|widthRate|1.3f|v3.8.0|the size rate of the width.
|
||||
|radiusRate|1.3f|v3.8.0|the size rate of the radius.
|
||||
|
||||
```mdx-code-block
|
||||
</APITable>
|
||||
```
|
||||
|
||||
## AnimationStyle
|
||||
|
||||
> XCharts.Runtime.AnimationStyle : [ChildComponent](#childcomponent)
|
||||
@@ -292,6 +315,7 @@ the animation of serie. support animation type: fadeIn, fadeOut, change, additio
|
||||
|fadeOut||v3.8.0|Fade out animation configuration. [AnimationFadeOut](#animationfadeout)|
|
||||
|change||v3.8.0|Update data animation configuration. [AnimationChange](#animationchange)|
|
||||
|addition||v3.8.0|Add data animation configuration. [AnimationAddition](#animationaddition)|
|
||||
|interaction||v3.8.0|Interaction animation configuration. [AnimationInteraction](#animationinteraction)|
|
||||
|
||||
```mdx-code-block
|
||||
</APITable>
|
||||
@@ -1775,7 +1799,6 @@ A data item of serie.
|
||||
|lineSymbolSize|||the symbol size of line serie.
|
||||
|scatterSymbolSize|||the symbol size of scatter serie.
|
||||
|pieTooltipExtraRadius|||the extra radius of pie when actived by tooltip.
|
||||
|selectedRate|1.3f||the rate of symbol size of line or scatter serie.
|
||||
|pieSelectedOffset|||the center offset of pie if selected.
|
||||
|candlestickColor|Color32(235, 84, 84, 255)||K线图阳线(涨)填充色
|
||||
|candlestickColor0|Color32(71, 178, 98, 255)||K线图阴线(跌)填充色
|
||||
|
||||
@@ -69,11 +69,13 @@ slug: /changelog
|
||||
|
||||
版本要点:
|
||||
|
||||
* 新增数据动画
|
||||
* 重构和完善动画系统,增加新增动画和交互动画的配置支持
|
||||
|
||||
日志详情:
|
||||
|
||||
* (2023.07.11) 重构`Animation`动画系统,增加`Addition`新增动画支持
|
||||
* (2023.07.14) 增加`Animation`的`Interaction`交互动画配置支持
|
||||
* (2023.07.11) 增加`Animation`的`Addition`新增动画配置支持
|
||||
* (2023.07.11) 重构`Animation`动画系统,完善动画体验
|
||||
* (2023.06.30) 增加`PolarCood`的`indicatorLabelOffset`设置指示文本偏移的支持
|
||||
* (2023.06.30) 修复`Axis`的`IndicatorLabel`的背景颜色可能不正常的问题
|
||||
* (2023.06.30) 增加`Axis`的`IndicatorLabel`可自定义`color`的支持
|
||||
|
||||
@@ -171,6 +171,7 @@ import APITable from '@site/src/components/APITable';
|
||||
- [AnimationFadeIn](#animationfadein)
|
||||
- [AnimationFadeOut](#animationfadeout)
|
||||
- [AnimationInfo](#animationinfo)
|
||||
- [AnimationInteraction](#animationinteraction)
|
||||
- [BaseSerie](#baseserie)
|
||||
- [ChartText](#charttext)
|
||||
- [ChildComponent](#childcomponent)
|
||||
@@ -248,7 +249,7 @@ import APITable from '@site/src/components/APITable';
|
||||
|
||||
## AnimationInfo
|
||||
|
||||
> XCharts.Runtime.AnimationInfo / Subclasses: [AnimationFadeIn](#animationfadein), [AnimationFadeOut](#animationfadeout), [AnimationChange](#animationchange), [AnimationAddition](#animationaddition)
|
||||
> XCharts.Runtime.AnimationInfo / Subclasses: [AnimationFadeIn](#animationfadein), [AnimationFadeOut](#animationfadeout), [AnimationChange](#animationchange), [AnimationAddition](#animationaddition), [AnimationInteraction](#animationinteraction)
|
||||
|
||||
> 从 `v3.8.0` 开始支持
|
||||
|
||||
@@ -270,11 +271,33 @@ import APITable from '@site/src/components/APITable';
|
||||
</APITable>
|
||||
```
|
||||
|
||||
## AnimationInteraction
|
||||
|
||||
> XCharts.Runtime.AnimationInteraction : [AnimationInfo](#animationinfo)
|
||||
|
||||
> 从 `v3.8.0` 开始支持
|
||||
|
||||
交互动画。
|
||||
|
||||
```mdx-code-block
|
||||
<APITable name="AnimationInteraction">
|
||||
```
|
||||
|
||||
|
||||
|field|default|since|comment|
|
||||
|--|--|--|--|
|
||||
|widthRate|1.3f|v3.8.0|宽度的放大倍率。
|
||||
|radiusRate|1.3f|v3.8.0|半径的放大倍率。
|
||||
|
||||
```mdx-code-block
|
||||
</APITable>
|
||||
```
|
||||
|
||||
## AnimationStyle
|
||||
|
||||
> XCharts.Runtime.AnimationStyle : [ChildComponent](#childcomponent)
|
||||
|
||||
动画组件,用于控制图表的动画播放。支持配置四种动画表现:FadeIn(渐入动画),FadeOut(渐出动画),Change(变更动画),Addition(新增动画)。 按作用的对象可以分为两类:SerieAnimation(系列动画)和DataAnimation(数据动画)。
|
||||
动画组件,用于控制图表的动画播放。支持配置五种动画表现:FadeIn(渐入动画),FadeOut(渐出动画),Change(变更动画),Addition(新增动画),Interaction(交互动画)。 按作用的对象可以分为两类:SerieAnimation(系列动画)和DataAnimation(数据动画)。
|
||||
|
||||
```mdx-code-block
|
||||
<APITable name="AnimationStyle">
|
||||
@@ -292,6 +315,7 @@ import APITable from '@site/src/components/APITable';
|
||||
|fadeOut||v3.8.0|渐出动画配置。 [AnimationFadeOut](#animationfadeout)|
|
||||
|change||v3.8.0|数据变更动画配置。 [AnimationChange](#animationchange)|
|
||||
|addition||v3.8.0|数据新增动画配置。 [AnimationAddition](#animationaddition)|
|
||||
|interaction||v3.8.0|交互动画配置。 [AnimationInteraction](#animationinteraction)|
|
||||
|
||||
```mdx-code-block
|
||||
</APITable>
|
||||
@@ -1775,7 +1799,6 @@ Radar coordinate conponnet for radar charts. 雷达图坐标系组件,只适
|
||||
|lineSymbolSize|||折线图的Symbol大小。
|
||||
|scatterSymbolSize|||散点图的Symbol大小。
|
||||
|pieTooltipExtraRadius|||饼图鼠标移到高亮时的额外半径
|
||||
|selectedRate|1.3f||折线图或散点图在被选中时的放大倍数。
|
||||
|pieSelectedOffset|||饼图选中时的中心点偏移。
|
||||
|candlestickColor|Color32(235, 84, 84, 255)||K线图阳线(涨)填充色
|
||||
|candlestickColor0|Color32(71, 178, 98, 255)||K线图阴线(跌)填充色
|
||||
|
||||
@@ -50,6 +50,23 @@ namespace XCharts.Editor
|
||||
}
|
||||
}
|
||||
|
||||
[CustomPropertyDrawer(typeof(XCharts.Runtime.AnimationInteraction), true)]
|
||||
public class AnimationInteractionDrawer : BasePropertyDrawer
|
||||
{
|
||||
public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
|
||||
{
|
||||
base.OnGUI(pos, prop, label);
|
||||
if (MakeComponentFoldout(prop, "m_Enable", true))
|
||||
{
|
||||
++EditorGUI.indentLevel;
|
||||
PropertyField(prop, "m_Duration");
|
||||
PropertyField(prop, "m_WidthRate");
|
||||
PropertyField(prop, "m_RadiusRate");
|
||||
--EditorGUI.indentLevel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[CustomPropertyDrawer(typeof(AnimationStyle), true)]
|
||||
public class AnimationDrawer : BasePropertyDrawer
|
||||
{
|
||||
@@ -66,6 +83,7 @@ namespace XCharts.Editor
|
||||
PropertyField(prop, "m_FadeOut");
|
||||
PropertyField(prop, "m_Change");
|
||||
PropertyField(prop, "m_Addition");
|
||||
PropertyField(prop, "m_Interaction");
|
||||
--EditorGUI.indentLevel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,9 +19,9 @@ namespace XCharts.Example
|
||||
var serie = chart.GetSerie(0);
|
||||
serie.animation.enable = true;
|
||||
//自定义每个数据项的渐入延时
|
||||
serie.animation.fadein.delayFunction = CustomFadeInDelay;
|
||||
serie.animation.fadeIn.delayFunction = CustomFadeInDelay;
|
||||
//自定义每个数据项的渐入时长
|
||||
serie.animation.fadein.durationFunction = CustomFadeInDuration;
|
||||
serie.animation.fadeIn.durationFunction = CustomFadeInDuration;
|
||||
}
|
||||
|
||||
float CustomFadeInDelay(int dataIndex)
|
||||
|
||||
@@ -403,4 +403,27 @@ namespace XCharts.Runtime
|
||||
public class AnimationAddition : AnimationInfo
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interactive animation of charts.
|
||||
/// |交互动画。
|
||||
/// </summary>
|
||||
[Since("v3.8.0")]
|
||||
[System.Serializable]
|
||||
public class AnimationInteraction : AnimationInfo
|
||||
{
|
||||
[SerializeField][Since("v3.8.0")] private float m_WidthRate = 1.3f;
|
||||
[SerializeField][Since("v3.8.0")] private float m_RadiusRate = 1.3f;
|
||||
|
||||
/// <summary>
|
||||
/// the size rate of the width.
|
||||
/// |宽度的放大倍率。
|
||||
/// </summary>
|
||||
public float widthRate { get { return m_WidthRate; } set { m_WidthRate = value; } }
|
||||
/// <summary>
|
||||
/// the size rate of the radius.
|
||||
/// |半径的放大倍率。
|
||||
/// </summary>
|
||||
public float radiusRate { get { return m_RadiusRate; } set { m_RadiusRate = value; } }
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ namespace XCharts.Runtime
|
||||
|
||||
/// <summary>
|
||||
/// the animation of serie. support animation type: fadeIn, fadeOut, change, addition.
|
||||
/// |动画组件,用于控制图表的动画播放。支持配置四种动画表现:FadeIn(渐入动画),FadeOut(渐出动画),Change(变更动画),Addition(新增动画)。
|
||||
/// |动画组件,用于控制图表的动画播放。支持配置五种动画表现:FadeIn(渐入动画),FadeOut(渐出动画),Change(变更动画),Addition(新增动画),Interaction(交互动画)。
|
||||
/// 按作用的对象可以分为两类:SerieAnimation(系列动画)和DataAnimation(数据动画)。
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
@@ -60,6 +60,7 @@ namespace XCharts.Runtime
|
||||
[SerializeField][Since("v3.8.0")] private AnimationFadeOut m_FadeOut = new AnimationFadeOut() { reverse = true };
|
||||
[SerializeField][Since("v3.8.0")] private AnimationChange m_Change = new AnimationChange() { duration = 500 };
|
||||
[SerializeField][Since("v3.8.0")] private AnimationAddition m_Addition = new AnimationAddition() { duration = 500 };
|
||||
[SerializeField][Since("v3.8.0")] private AnimationInteraction m_Interaction = new AnimationInteraction() { duration = 250 };
|
||||
|
||||
[Obsolete("Use animation.fadeIn.delayFunction instead.", true)]
|
||||
public AnimationDelayFunction fadeInDelayFunction;
|
||||
@@ -99,12 +100,12 @@ namespace XCharts.Runtime
|
||||
/// Fade in animation configuration.
|
||||
/// |渐入动画配置。
|
||||
/// </summary>
|
||||
public AnimationFadeIn fadein { get { return m_FadeIn; } }
|
||||
public AnimationFadeIn fadeIn { get { return m_FadeIn; } }
|
||||
/// <summary>
|
||||
/// Fade out animation configuration.
|
||||
/// |渐出动画配置。
|
||||
/// </summary>
|
||||
public AnimationFadeOut fadeout { get { return m_FadeOut; } }
|
||||
public AnimationFadeOut fadeOut { get { return m_FadeOut; } }
|
||||
/// <summary>
|
||||
/// Update data animation configuration.
|
||||
/// |数据变更动画配置。
|
||||
@@ -115,6 +116,11 @@ namespace XCharts.Runtime
|
||||
/// |数据新增动画配置。
|
||||
/// </summary>
|
||||
public AnimationAddition addition { get { return m_Addition; } }
|
||||
/// <summary>
|
||||
/// Interaction animation configuration.
|
||||
/// |交互动画配置。
|
||||
/// </summary>
|
||||
public AnimationInteraction interaction { get { return m_Interaction; } }
|
||||
|
||||
private Vector3 m_LinePathLastPos;
|
||||
private List<AnimationInfo> m_Animations;
|
||||
@@ -278,6 +284,7 @@ namespace XCharts.Runtime
|
||||
startIndex = anim.context.currPointIndex == paths.Count - 1 ?
|
||||
paths.Count - 2 :
|
||||
anim.context.currPointIndex;
|
||||
if (startIndex < 0 || startIndex > paths.Count - 2) startIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -523,6 +530,14 @@ namespace XCharts.Runtime
|
||||
return 0;
|
||||
}
|
||||
|
||||
public float GetInteractionDuration()
|
||||
{
|
||||
if (m_Enable && m_Interaction.enable)
|
||||
return m_Interaction.duration;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
public bool HasFadeOut()
|
||||
{
|
||||
return enable && m_FadeOut.context.end;
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace XCharts.Runtime
|
||||
|
||||
public void SetValue(ref bool needInteract, float size, bool highlight, float rate = 1.3f)
|
||||
{
|
||||
size = highlight ? size * rate : size;
|
||||
size = highlight && rate != 0 ? size * rate : size;
|
||||
SetValue(ref needInteract, size);
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace XCharts.Runtime
|
||||
|
||||
public bool TryGetValue(ref float value, ref bool interacting, float animationDuration = 250)
|
||||
{
|
||||
if (!IsValueEnable() || m_PreviousValue == 0)
|
||||
if (!IsValueEnable() || m_PreviousValue == 0 || animationDuration == 0)
|
||||
return false;
|
||||
if (m_UpdateFlag)
|
||||
{
|
||||
@@ -106,7 +106,7 @@ namespace XCharts.Runtime
|
||||
|
||||
public bool TryGetColor(ref Color32 color, ref bool interacting, float animationDuration = 250)
|
||||
{
|
||||
if (!IsValueEnable())
|
||||
if (!IsValueEnable() || animationDuration == 0)
|
||||
return false;
|
||||
if (m_UpdateFlag)
|
||||
{
|
||||
@@ -131,7 +131,7 @@ namespace XCharts.Runtime
|
||||
|
||||
public bool TryGetColor(ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250)
|
||||
{
|
||||
if (!IsValueEnable())
|
||||
if (!IsValueEnable() || animationDuration == 0)
|
||||
return false;
|
||||
if (m_UpdateFlag)
|
||||
{
|
||||
@@ -157,7 +157,7 @@ namespace XCharts.Runtime
|
||||
}
|
||||
public bool TryGetValueAndColor(ref float value, ref Color32 color, ref Color32 toColor, ref bool interacting, float animationDuration = 250)
|
||||
{
|
||||
if (!IsValueEnable())
|
||||
if (!IsValueEnable() || animationDuration == 0)
|
||||
return false;
|
||||
if (m_UpdateFlag)
|
||||
{
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace XCharts.Runtime
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
@@ -139,6 +139,7 @@ namespace XCharts.Runtime
|
||||
var areaColor = ColorUtil.clearColor32;
|
||||
var areaToColor = ColorUtil.clearColor32;
|
||||
var interacting = false;
|
||||
var interactDuration = serie.animation.GetInteractionDuration();
|
||||
|
||||
float start, end;
|
||||
float inside, outside;
|
||||
@@ -184,7 +185,7 @@ namespace XCharts.Runtime
|
||||
serieData.context.toAngle = end;
|
||||
serieData.context.halfAngle = (start + end) / 2;
|
||||
|
||||
if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting))
|
||||
if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting, interactDuration))
|
||||
{
|
||||
SerieHelper.GetItemColor(out areaColor, out areaToColor, serie, serieData, chart.theme);
|
||||
serieData.interact.SetColor(ref interacting, areaColor, areaToColor);
|
||||
|
||||
@@ -183,11 +183,12 @@ namespace XCharts.Runtime
|
||||
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow) :
|
||||
showData.Count;
|
||||
var isPercentStack = SeriesHelper.IsPercentStack<Bar>(chart.series, serie.stack);
|
||||
bool dataChanging = false;
|
||||
float dataChangeDuration = serie.animation.GetChangeDuration();
|
||||
var dataChanging = false;
|
||||
var dataChangeDuration = serie.animation.GetChangeDuration();
|
||||
var dataAddDuration = serie.animation.GetAdditionDuration();
|
||||
double yMinValue = relativedAxis.context.minValue;
|
||||
double yMaxValue = relativedAxis.context.maxValue;
|
||||
var interactDuration = serie.animation.GetInteractionDuration();
|
||||
var yMinValue = relativedAxis.context.minValue;
|
||||
var yMaxValue = relativedAxis.context.maxValue;
|
||||
|
||||
var areaColor = ColorUtil.clearColor32;
|
||||
var areaToColor = ColorUtil.clearColor32;
|
||||
@@ -218,7 +219,7 @@ namespace XCharts.Runtime
|
||||
var borderGapAndWidth = borderWidth + borderGap;
|
||||
var backgroundColor = itemStyle.backgroundColor;
|
||||
|
||||
if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting))
|
||||
if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting, interactDuration))
|
||||
{
|
||||
SerieHelper.GetItemColor(out areaColor, out areaToColor, serie, serieData, chart.theme);
|
||||
serieData.interact.SetColor(ref interacting, areaColor, areaToColor);
|
||||
|
||||
@@ -133,9 +133,10 @@ namespace XCharts.Runtime
|
||||
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow) :
|
||||
showData.Count;
|
||||
|
||||
bool dataChanging = false;
|
||||
float dataChangeDuration = serie.animation.GetChangeDuration();
|
||||
var dataChanging = false;
|
||||
var dataChangeDuration = serie.animation.GetChangeDuration();
|
||||
var dataAddDuration = serie.animation.GetAdditionDuration();
|
||||
var interactDuration = serie.animation.GetInteractionDuration();
|
||||
double yMinValue = relativedAxis.context.minValue;
|
||||
double yMaxValue = relativedAxis.context.maxValue;
|
||||
|
||||
@@ -165,7 +166,7 @@ namespace XCharts.Runtime
|
||||
var relativedValue = serieData.GetCurrData(1, dataAddDuration, dataChangeDuration, relativedAxis.inverse, yMinValue, yMaxValue, serie.animation.unscaledTime);
|
||||
var borderWidth = relativedValue == 0 ? 0 : itemStyle.runtimeBorderWidth;
|
||||
|
||||
if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting))
|
||||
if (!serieData.interact.TryGetColor(ref areaColor, ref areaToColor, ref interacting, interactDuration))
|
||||
{
|
||||
SerieHelper.GetItemColor(out areaColor, out areaToColor, serie, serieData, chart.theme);
|
||||
serieData.interact.SetColor(ref interacting, areaColor, areaToColor);
|
||||
@@ -217,7 +218,7 @@ namespace XCharts.Runtime
|
||||
else
|
||||
{
|
||||
if (axis.context.minMaxRange <= 0) pY = grid.context.y;
|
||||
else pY = grid.context.y + (float) ((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.height - barWidth);
|
||||
else pY = grid.context.y + (float)((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.height - barWidth);
|
||||
}
|
||||
pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0);
|
||||
}
|
||||
@@ -230,7 +231,7 @@ namespace XCharts.Runtime
|
||||
else
|
||||
{
|
||||
if (axis.context.minMaxRange <= 0) pX = grid.context.x;
|
||||
else pX = grid.context.x + (float) ((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.width - barWidth);
|
||||
else pX = grid.context.x + (float)((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.width - barWidth);
|
||||
}
|
||||
pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace XCharts.Runtime
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace XCharts.Runtime
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
@@ -73,7 +73,7 @@ namespace XCharts.Runtime
|
||||
else if (serie.context.isTriggerByAxis)
|
||||
{
|
||||
serie.context.pointerEnter = false;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
@@ -116,7 +116,7 @@ namespace XCharts.Runtime
|
||||
needInteract = true;
|
||||
}
|
||||
if (serie.context.pointerItemDataIndex >= 0)
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
else
|
||||
serie.interact.SetValue(ref needInteract, lineWidth);
|
||||
}
|
||||
@@ -144,6 +144,7 @@ namespace XCharts.Runtime
|
||||
var lineArrow = serie.lineArrow;
|
||||
var visualMap = chart.GetVisualMapOfSerie(serie);
|
||||
var isVisualMapGradient = VisualMapHelper.IsNeedLineGradient(visualMap);
|
||||
var interactDuration = serie.animation.GetInteractionDuration();
|
||||
|
||||
Axis axis;
|
||||
Axis relativedAxis;
|
||||
@@ -176,7 +177,7 @@ namespace XCharts.Runtime
|
||||
continue;
|
||||
|
||||
var symbolSize = 0f;
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting))
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration))
|
||||
{
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.lineSymbolSize, state);
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace XCharts.Runtime
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
|
||||
@@ -410,7 +410,7 @@ namespace XCharts.Runtime
|
||||
public static float GetLineWidth(ref bool interacting, Serie serie, float defaultWidth)
|
||||
{
|
||||
var lineWidth = 0f;
|
||||
if (!serie.interact.TryGetValue(ref lineWidth, ref interacting))
|
||||
if (!serie.interact.TryGetValue(ref lineWidth, ref interacting, serie.animation.GetInteractionDuration()))
|
||||
{
|
||||
lineWidth = serie.lineStyle.GetWidth(defaultWidth);
|
||||
serie.interact.SetValue(ref interacting, lineWidth);
|
||||
|
||||
@@ -66,14 +66,13 @@ namespace XCharts.Runtime
|
||||
}
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
var themeSymbolSize = chart.theme.serie.lineSymbolSize;
|
||||
var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize;
|
||||
lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth);
|
||||
|
||||
var needInteract = false;
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
@@ -85,7 +84,7 @@ namespace XCharts.Runtime
|
||||
else if (serie.context.isTriggerByAxis)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, serie.animation.interaction.widthRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
|
||||
@@ -240,6 +240,7 @@ namespace XCharts.Runtime
|
||||
SerieHelper.GetAllMinMaxData(serie, m_RadarCoord.ceilRate);
|
||||
Color32 areaColor, areaToColor;
|
||||
var startAngle = m_RadarCoord.startAngle * Mathf.PI / 180;
|
||||
var interactDuration = serie.animation.GetInteractionDuration();
|
||||
for (int j = 0; j < serie.data.Count; j++)
|
||||
{
|
||||
var serieData = serie.data[j];
|
||||
@@ -331,7 +332,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
var point = serieData.context.dataPoints[m];
|
||||
var symbolSize = 0f;
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting))
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration))
|
||||
{
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.lineSymbolSize, serieState);
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
|
||||
@@ -77,7 +77,6 @@ namespace XCharts.Runtime
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
var themeSymbolSize = chart.theme.serie.scatterSymbolSize;
|
||||
var themeSymbolSelectedSize = chart.theme.serie.scatterSymbolSelectedSize;
|
||||
var needInteract = false;
|
||||
for (int i = serie.dataCount - 1; i >= 0; i--)
|
||||
{
|
||||
@@ -134,6 +133,7 @@ namespace XCharts.Runtime
|
||||
serie.animation.InitProgress(0, 1);
|
||||
var rate = serie.animation.GetCurrRate();
|
||||
var dataChangeDuration = serie.animation.GetChangeDuration();
|
||||
var interactDuration = serie.animation.GetInteractionDuration();
|
||||
var unscaledTime = serie.animation.unscaledTime;
|
||||
var dataChanging = false;
|
||||
var interacting = false;
|
||||
@@ -177,7 +177,7 @@ namespace XCharts.Runtime
|
||||
serieData.context.position = pos;
|
||||
var datas = serieData.data;
|
||||
var symbolSize = 0f;
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting))
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting, interactDuration))
|
||||
{
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.scatterSymbolSize, state);
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
|
||||
@@ -675,6 +675,7 @@ namespace XCharts.Runtime
|
||||
|
||||
public static float GetSysmbolSize(Serie serie, SerieData serieData, ThemeStyle theme, float defaultSize, SerieState state = SerieState.Auto)
|
||||
{
|
||||
if (serie == null) return defaultSize;
|
||||
if (state == SerieState.Auto)
|
||||
state = GetSerieState(serie, serieData);
|
||||
var stateStyle = GetStateStyle(serie, serieData, state);
|
||||
@@ -687,7 +688,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
case SerieState.Emphasis:
|
||||
case SerieState.Select:
|
||||
size *= theme.serie.selectedRate;
|
||||
size *= serie.animation.interaction.radiusRate;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -698,7 +699,10 @@ namespace XCharts.Runtime
|
||||
var symbol = stateStyle.symbol;
|
||||
size = symbol.GetSize(serieData == null ? null : serieData.data, defaultSize);
|
||||
}
|
||||
size = (float)serieData.GetAddAnimationData(0, size, serie.animation.GetAdditionDuration());
|
||||
if (serieData != null)
|
||||
{
|
||||
size = (float)serieData.GetAddAnimationData(0, size, serie.animation.GetAdditionDuration());
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ namespace XCharts.Runtime
|
||||
[SerializeField] protected float m_LineSymbolSize;
|
||||
[SerializeField] protected float m_ScatterSymbolSize;
|
||||
[SerializeField] protected float m_PieTooltipExtraRadius;
|
||||
[SerializeField] protected float m_SelectedRate = 1.3f;
|
||||
[SerializeField] protected float m_PieSelectedOffset;
|
||||
[SerializeField] protected Color32 m_CandlestickColor = new Color32(235, 84, 84, 255);
|
||||
[SerializeField] protected Color32 m_CandlestickColor0 = new Color32(71, 178, 98, 255);
|
||||
@@ -37,11 +36,6 @@ namespace XCharts.Runtime
|
||||
set { if (PropertyUtil.SetStruct(ref m_LineSymbolSize, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the selected symbol size of line serie.
|
||||
/// |折线图Symbol在被选中状态时的大小。
|
||||
/// </summary>
|
||||
public float lineSymbolSelectedSize { get { return lineSymbolSize * selectedRate; } }
|
||||
/// <summary>
|
||||
/// the symbol size of scatter serie.
|
||||
/// |散点图的Symbol大小。
|
||||
/// </summary>
|
||||
@@ -50,21 +44,6 @@ namespace XCharts.Runtime
|
||||
get { return m_ScatterSymbolSize; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_ScatterSymbolSize, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the selected symbol size of scatter serie.
|
||||
/// |散点图的Symbol在被选中状态时的大小。
|
||||
/// </summary>
|
||||
public float scatterSymbolSelectedSize { get { return scatterSymbolSize * selectedRate; } }
|
||||
/// <summary>
|
||||
/// the rate of symbol size of line or scatter serie.
|
||||
/// |折线图或散点图在被选中时的放大倍数。
|
||||
/// </summary>
|
||||
public float selectedRate
|
||||
{
|
||||
get { return m_SelectedRate; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_SelectedRate, value)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// the extra radius of pie when actived by tooltip.
|
||||
/// |饼图鼠标移到高亮时的额外半径
|
||||
@@ -130,7 +109,6 @@ namespace XCharts.Runtime
|
||||
m_LineWidth = theme.lineWidth;
|
||||
m_LineSymbolSize = theme.lineSymbolSize;
|
||||
m_ScatterSymbolSize = theme.scatterSymbolSize;
|
||||
selectedRate = theme.selectedRate;
|
||||
m_PieTooltipExtraRadius = theme.pieTooltipExtraRadius;
|
||||
m_PieSelectedOffset = theme.pieSelectedOffset;
|
||||
m_CandlestickColor = theme.candlestickColor;
|
||||
|
||||
Reference in New Issue
Block a user