2025-06-07 17:43:34 +08:00

191 lines
5.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using FairyGUI.Utils;
namespace FairyGUI
{
/// <summary>
/// GMovieClip class.
/// </summary>
public class GMovieClip : GObject, IAnimationGear, IColorGear
{
MovieClip _content;
EventListener _onPlayEnd;
public GMovieClip()
{
}
override protected void CreateDisplayObject()
{
_content = new MovieClip();
_content.gOwner = this;
_content.ignoreEngineTimeScale = true;
displayObject = _content;
}
/// <summary>
///
/// </summary>
public EventListener onPlayEnd
{
get { return _onPlayEnd ?? (_onPlayEnd = new EventListener(this, "onPlayEnd")); }
}
/// <summary>
///
/// </summary>
public bool playing
{
get { return _content.playing; }
set
{
_content.playing = value;
UpdateGear(5);
}
}
/// <summary>
///
/// </summary>
public int frame
{
get { return _content.frame; }
set
{
_content.frame = value;
UpdateGear(5);
}
}
/// <summary>
///
/// </summary>
public Color color
{
get { return _content.color; }
set
{
_content.color = value;
UpdateGear(4);
}
}
/// <summary>
///
/// </summary>
public FlipType flip
{
get { return _content.graphics.flip; }
set { _content.graphics.flip = value; }
}
/// <summary>
///
/// </summary>
public Material material
{
get { return _content.material; }
set { _content.material = value; }
}
/// <summary>
///
/// </summary>
public string shader
{
get { return _content.shader; }
set { _content.shader = value; }
}
/// <summary>
///
/// </summary>
public float timeScale
{
get { return _content.timeScale; }
set { _content.timeScale = value; }
}
/// <summary>
///
/// </summary>
public bool ignoreEngineTimeScale
{
get { return _content.ignoreEngineTimeScale; }
set { _content.ignoreEngineTimeScale = value; }
}
/// <summary>
///
/// </summary>
public void Rewind()
{
_content.Rewind();
}
/// <summary>
///
/// </summary>
/// <param name="anotherMc"></param>
public void SyncStatus(GMovieClip anotherMc)
{
_content.SyncStatus(anotherMc._content);
}
/// <summary>
///
/// </summary>
/// <param name="time"></param>
public void Advance(float time)
{
_content.Advance(time);
}
/// <summary>
/// Play from the start to end, repeat times, set to endAt on complete.
/// 从start帧开始播放到end帧-1表示结尾重复times次0表示无限循环循环结束后停止在endAt帧-1表示参数end
/// </summary>
/// <param name="start">Start frame</param>
/// <param name="end">End frame. -1 indicates the last frame.</param>
/// <param name="times">Repeat times. 0 indicates infinite loop.</param>
/// <param name="endAt">Stop frame. -1 indicates to equal to the end parameter.</param>
public void SetPlaySettings(int start, int end, int times, int endAt)
{
((MovieClip)displayObject).SetPlaySettings(start, end, times, endAt);
}
override public void ConstructFromResource()
{
this.gameObjectName = packageItem.name;
PackageItem contentItem = packageItem.getBranch();
sourceWidth = contentItem.width;
sourceHeight = contentItem.height;
initWidth = sourceWidth;
initHeight = sourceHeight;
contentItem = contentItem.getHighResolution();
contentItem.Load();
_content.interval = contentItem.interval;
_content.swing = contentItem.swing;
_content.repeatDelay = contentItem.repeatDelay;
_content.frames = contentItem.frames;
SetSize(sourceWidth, sourceHeight);
}
override public void Setup_BeforeAdd(ByteBuffer buffer, int beginPos)
{
base.Setup_BeforeAdd(buffer, beginPos);
buffer.Seek(beginPos, 5);
if (buffer.ReadBool())
_content.color = buffer.ReadColor();
_content.graphics.flip = (FlipType)buffer.ReadByte();
_content.frame = buffer.ReadInt();
_content.playing = buffer.ReadBool();
}
}
}