using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
using UnityEngine;
///
/// 图片轮播组件
///
public class NewCarouselImage : UIBehaviour, IBeginDragHandler, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, ICanvasElement
{
///
/// 滚动方向H or V
///
public enum AxisType
{
Horizontal,
Vertical
}
///
/// 图片轮播方向
///
public enum LoopDirType
{
RightOrUp = -1,
LeftOrDown = 1,
}
///
/// 子物体size
///
public Vector2 mCellSize;
///
/// 子物体间隔
///
public Vector2 mSpacing;
///
/// 方向
///
public AxisType MMoveAxisType;
///
/// 轮播方向-- 1为向左移动,-1为向右移动
///
public LoopDirType mLoopDirType = LoopDirType.LeftOrDown;
///
/// Tween时的步数
///
[Range(1, 500)]
public int mTweenStepNum = 150;
///
/// 自动轮播
///
public bool mAutoLoop = false;
///
/// 可否拖动
///
public bool mDrag = false;
///
/// 下一次播放间隔时间
///
public float mLoopSpaceTime = 1;
///
/// 位于正中的子元素变化的事件,参数为index
///
[HideInInspector]
public Action mOnIndexChange;
///
/// 当前处于正中的元素
///
public int CurrentIndex
{
get
{
return m_index;
}
}
private bool m_Dragging = false;
private bool m_IsNormalizing = false;
private Vector2 m_CurrentPos;
private int m_currentStep = 0;
private RectTransform viewRectTran;
private Vector2 m_PrePos;
private int m_index = 0, m_preIndex = 0;
private RectTransform header;
private bool contentCheckCache = true;
private float currTimeDelta = 0;
private float viewRectXMin
{
get
{
Vector3[] v = new Vector3[4];
viewRectTran.GetWorldCorners(v);
return v[0].x;
}
}
private float viewRectXMax
{
get
{
Vector3[] v = new Vector3[4];
viewRectTran.GetWorldCorners(v);
return v[3].x;
}
}
private float viewRectYMin
{
get
{
Vector3[] v = new Vector3[4];
viewRectTran.GetWorldCorners(v);
return v[0].y;
}
}
private float viewRectYMax
{
get
{
Vector3[] v = new Vector3[4];
viewRectTran.GetWorldCorners(v);
return v[2].y;
}