上海虹口龙之梦项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

63 lines
1.7 KiB

using System;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
[AddComponentMenu("UI/LongClickButton")]
public class LongClickButton : Button
{
[Serializable]
public class LongClickEvent : UnityEvent { }
[SerializeField]
private LongClickEvent m_onLongClick = null;
public LongClickEvent onLongClick
{
get { return m_onLongClick; }
set { m_onLongClick = value; }
}
private DateTime m_firstTime = default(DateTime);
private DateTime m_secondTime = default(DateTime);
private void Press()
{
if (null != onLongClick)
onLongClick.Invoke();
resetTime();
}
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
if (m_firstTime.Equals(default(DateTime)))
m_firstTime = DateTime.Now;
}
public override void OnPointerUp(PointerEventData eventData)
{
base.OnPointerUp(eventData);
if (!m_firstTime.Equals(default(DateTime)))
m_secondTime = DateTime.Now;
if (!m_firstTime.Equals(default(DateTime)) && !m_secondTime.Equals(default(DateTime)))
{
var intervalTime = m_secondTime - m_firstTime;
int milliSeconds = intervalTime.Seconds * 1000 + intervalTime.Milliseconds;
if (milliSeconds > 600) Press();
else resetTime();
}
}
public override void OnPointerExit(PointerEventData eventData)
{
base.OnPointerExit(eventData);
resetTime();
}
private void resetTime()
{
m_firstTime = default(DateTime);
m_secondTime = default(DateTime);
}
}