Dotween

using MEHotFixComp;
using System;
using TMPro;
using UnityEngine;
using EventManager;
using DG.Tweening;

public class FCG_ChangeOptionsDisplayer : HotFixCompDisplayBehavior
{
	#region 成员
	private bool m_IsUpdate = false;
	private SfChartShellLayout m_Shell;
	private FCG_ChangeOptionsStyle m_Style = null;
	private FCG_ChangeOptionsData m_Data = null;

	private RectTransform m_MainView = null;
	private Transform option1;
	private Transform option2;
	private TextMeshProUGUI option1Text;
	private TextMeshProUGUI option2Text;

	EventTrigger et;//事件触发器
	EventTriggerCurrentValueMono etcv;//传值


	Sequence option1Seq;//相当于一个Tweener的链表,可以通过执行一个Sequence来执行一串Tweener
	#endregion


	// 初始化
	override public void Awake()
	{
		this.m_MainView = this.transform.Find("MainView") as RectTransform;
		option1Text = this.m_MainView.Find("option1").GetComponent<TextMeshProUGUI>();
		option2Text = this.m_MainView.Find("option2").GetComponent<TextMeshProUGUI>();
		option1 = this.m_MainView.Find("option1");
		option2 = this.m_MainView.Find("option2");

		InitSeq();

		et = transform.GetCompExt<EventTrigger>();
		etcv = transform.GetCompExt<EventTriggerCurrentValueMono>();
		UISingleClickListener clickOption1Listener = UISingleClickListener.Get(option1.gameObject);
		clickOption1Listener.onClick = OnClickOption1;
		UISingleClickListener clickOption2Listener = UISingleClickListener.Get(option2.gameObject);
		clickOption2Listener.onClick = OnClickOption2;
	}

	private void OnClickOption2(GameObject obj)
	{
		Debug.Log("OnClickOption2");

		etcv.currValue = m_Data.m_DataList[1].etcv;
		OnClickOption(obj);

		option1Seq.Restart();

	}

	private void OnClickOption1(GameObject obj)
	{
		Debug.Log("OnClickOption1");
		etcv.currValue = m_Data.m_DataList[0].etcv;
		OnClickOption(obj);

		option1Seq.PlayBackwards();
	}


	private void InitSeq()//防止频繁的创建动画
	{

		option1Seq = DOTween.Sequence();
		float dura = 0.5f;
		float offsetY = option1.localPosition.y - option2.localPosition.y;
		Tweener t1 = option1Text.DOFade(0.5f, dura);
		Tweener t2 = option1.DOLocalMoveY(option1.localPosition.y + offsetY, dura);
		Tweener t3 = option2Text.DOFade(1f, dura);
		Tweener t4 = option2.DOLocalMoveY(option2.localPosition.y + offsetY, dura);

		option1Seq.Append(t1);
		option1Seq.Join(t2);
		option1Seq.Join(t3);
		option1Seq.Join(t4);
		option1Seq.SetAutoKill(false);
		option1Seq.Pause();
	}

	private void OnClickOption(GameObject go)
	{
		etcv.currValue.currCustomValue["文本名"] = go.GetComponent<TextMeshProUGUI>().text;
		et.Trigger("点击文本", go, etcv.currValue);
	}




	// 组件enter重入时需要做清理工作
	override public void ResetComponent()
	{

	}

	// 组件视图主逻辑
	private void SetView()
	{
		//  组件主体大小以MainView为准自适应
		Vector2 viewSize = this.m_MainView.sizeDelta;

		var data = m_Data.m_DataList;
		int count = data.Count;
		if (count > 1)
		{
			option1Text.text = data[0].str1;
			option2Text.text = data[1].str1;
		}
	}
	public override void OnDestroy()
	{
		UISingleClickListener.Get(option2.gameObject).onClick = null;
		UISingleClickListener.Get(option2.gameObject).onClick = null;

		option1 = null;
		option2 = null;
		option1Text = null;
		option2Text = null;

		if (option1Seq != null)
		{
			option1Seq.Kill(true);
			option1Seq = null;
		}

		if (et != null)
		{
			et.ClearEvent();
			et = null;
		}

		etcv = null;

		base.OnDestroy();
	}

	#region 流程
	override public void StyleInit(HotFixComponentCfgBase compCfg)
	{
		this.m_Style = compCfg as FCG_ChangeOptionsStyle;
		this.SetShell();
	}

	private void SetShell()
	{
		// 初始化并设置属性
		if (null == this.m_Shell)
		{
			this.m_Shell = this.transform.GetComponent<SfChartShellLayout>();
		}

		if (null != this.m_Shell)
		{
			SfCompCfgBase baseCfg = new SfCompCfgBase();
			baseCfg.ShellCfg = this.m_Style.ShellCfg;
			//baseCfg.TitleCfg = this.m_Style.TitleCfg;
			baseCfg.TitleCfg = null;
			baseCfg.LengendCfg = null;

			m_Shell.ViewInit(baseCfg);
			m_Shell.ReSetMainView(Vector4.zero);
		}
	}

	override public void DataInit(HotFixComponentDataBase compData, bool isUpdate)
	{
		if (isUpdate)
		{
			this.m_IsUpdate = true;
			this.SetShell();
		}

		this.m_Data = compData as FCG_ChangeOptionsData;
	}

	override public void EnterAnimation()
	{
		this.SetView();
		this.animatorFinishFlag = true;
	}

	override public void UpdateAnimation()
	{
		if (this.m_IsUpdate)
		{
			this.m_IsUpdate = false;
			this.SetView();
		}
		animatorFinishFlag = true;
	}

	override public void ExitAnimation()
	{
		this.animatorFinishFlag = true;
	}
	#endregion
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值