UGUI逐帧动画
2016-02-25 23:54
423 查看
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class UMovie : MonoBehaviour
{
public string movieName;
public List<Sprite> lSprites;
public float fps = 0.05f;
public bool isLoop = true;
public bool isPingpang = false;
public float showerWidth
{
get
{
if (shower == null)
{
return 0;
}
return shower.rectTransform.rect.width;
}
}
public float showerHeight
{
get
{
if (shower == null)
{
return 0;
}
return shower.rectTransform.rect.height;
}
}
void Awake()
{
shower = GetComponent<Image>();
if (string.IsNullOrEmpty(movieName))
{
movieName = "movieName";
}
}
void Start()
{
if (isPingpang)
{
for (int i = lSprites.Count-2; i >= 1; i--)
{
lSprites.Add(lSprites);
}
}
// Debug.Log(isPingpang);
// Debug.Log(lSprites.Count);
Play(curFrame);
}
public void Play(int iFrame)
{
if (iFrame >= FrameCount)
{
if (!isLoop)
return;
else
iFrame = 0;
}
shower.sprite = lSprites[iFrame];
curFrame = iFrame;
shower.SetNativeSize();
if (dMovieEvents.ContainsKey(iFrame))
{
foreach (delegateMovieEvent del in dMovieEvents[iFrame])
{
del();
}
}
}
private Image shower;
int curFrame = 0;
public int FrameCount
{
get
{
return lSprites.Count;
}
}
float fDelta = 0;
void Update()
{
fDelta += Time.deltaTime;
if (fDelta > fps)
{
fDelta = 0;
curFrame++;
Play(curFrame);
}
}
public delegate void delegateMovieEvent();
private Dictionary<int, List<delegateMovieEvent>> dMovieEvents = new Dictionary<int, List<delegateMovieEvent>>();
public void RegistMovieEvent(int frame, delegateMovieEvent delEvent)
{
if (!dMovieEvents.ContainsKey(frame))
{
dMovieEvents.Add(frame, new List<delegateMovieEvent>());
}
dMovieEvents[frame].Add(delEvent);
}
public void UnregistMovieEvent(int frame, delegateMovieEvent delEvent)
{
if (!dMovieEvents.ContainsKey(frame))
{
return;
}
if (dMovieEvents[frame].Contains(delEvent))
{
dMovieEvents[frame].Remove(delEvent);
}
}
}
using System.Collections.Generic;
using UnityEngine.UI;
public class UMovie : MonoBehaviour
{
public string movieName;
public List<Sprite> lSprites;
public float fps = 0.05f;
public bool isLoop = true;
public bool isPingpang = false;
public float showerWidth
{
get
{
if (shower == null)
{
return 0;
}
return shower.rectTransform.rect.width;
}
}
public float showerHeight
{
get
{
if (shower == null)
{
return 0;
}
return shower.rectTransform.rect.height;
}
}
void Awake()
{
shower = GetComponent<Image>();
if (string.IsNullOrEmpty(movieName))
{
movieName = "movieName";
}
}
void Start()
{
if (isPingpang)
{
for (int i = lSprites.Count-2; i >= 1; i--)
{
lSprites.Add(lSprites);
}
}
// Debug.Log(isPingpang);
// Debug.Log(lSprites.Count);
Play(curFrame);
}
public void Play(int iFrame)
{
if (iFrame >= FrameCount)
{
if (!isLoop)
return;
else
iFrame = 0;
}
shower.sprite = lSprites[iFrame];
curFrame = iFrame;
shower.SetNativeSize();
if (dMovieEvents.ContainsKey(iFrame))
{
foreach (delegateMovieEvent del in dMovieEvents[iFrame])
{
del();
}
}
}
private Image shower;
int curFrame = 0;
public int FrameCount
{
get
{
return lSprites.Count;
}
}
float fDelta = 0;
void Update()
{
fDelta += Time.deltaTime;
if (fDelta > fps)
{
fDelta = 0;
curFrame++;
Play(curFrame);
}
}
public delegate void delegateMovieEvent();
private Dictionary<int, List<delegateMovieEvent>> dMovieEvents = new Dictionary<int, List<delegateMovieEvent>>();
public void RegistMovieEvent(int frame, delegateMovieEvent delEvent)
{
if (!dMovieEvents.ContainsKey(frame))
{
dMovieEvents.Add(frame, new List<delegateMovieEvent>());
}
dMovieEvents[frame].Add(delEvent);
}
public void UnregistMovieEvent(int frame, delegateMovieEvent delEvent)
{
if (!dMovieEvents.ContainsKey(frame))
{
return;
}
if (dMovieEvents[frame].Contains(delEvent))
{
dMovieEvents[frame].Remove(delEvent);
}
}
}
相关文章推荐
- iOS开发中UICollectionView的使用方法
- UVA 1152(p237)----4 Values Whose Sum is Zero
- leetcode-128-Longest Consecutive Sequence
- UESTC 360 Another LCIS 线段树
- UI进阶第六天,绘制图形
- leetcode-115-Distinct Subsequences
- View Programming Guide for iOS 学习笔记_1
- Collection Views and Building Custom Layouts-备
- UVA 540(p117)----Team Queue
- UICollectionView 讲解-备
- POJ 3481 Double Queue(STL)
- 等待队列wait queue
- Marklogic学习 由浅入深(6)—— XQuery增删改查
- IOS学习 查看UIBarButtonSystemItem 类型图片 / pageControl的使用
- 封装一个UI控件的范例
- iOS 3D Touch使用<一、 Home Screen Quick Actions使用>
- Bluetooth
- StringBuffer和StringBuilder类
- POJ 3368 Frequent values (RMQ)
- IOS-UI-基本控件之UIButton