您的位置:首页 > 产品设计 > UI/UE

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);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: