提交修改
This commit is contained in:
@@ -1,311 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using FairyGUI.Utils;
|
||||
|
||||
namespace FairyGUI
|
||||
{
|
||||
/// <summary>
|
||||
/// GProgressBar class.
|
||||
/// </summary>
|
||||
public class GProgressBar : GComponent
|
||||
{
|
||||
double _min;
|
||||
double _max;
|
||||
double _value;
|
||||
ProgressTitleType _titleType;
|
||||
bool _reverse;
|
||||
|
||||
GObject _titleObject;
|
||||
GMovieClip _aniObject;
|
||||
GObject _barObjectH;
|
||||
GObject _barObjectV;
|
||||
float _barMaxWidth;
|
||||
float _barMaxHeight;
|
||||
float _barMaxWidthDelta;
|
||||
float _barMaxHeightDelta;
|
||||
float _barStartX;
|
||||
float _barStartY;
|
||||
|
||||
public GProgressBar()
|
||||
{
|
||||
_value = 50;
|
||||
_max = 100;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ProgressTitleType titleType
|
||||
{
|
||||
|
||||
get
|
||||
{
|
||||
return _titleType;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_titleType != value)
|
||||
{
|
||||
_titleType = value;
|
||||
Update(_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double min
|
||||
{
|
||||
get
|
||||
{
|
||||
return _min;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_min != value)
|
||||
{
|
||||
_min = value;
|
||||
Update(_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double max
|
||||
{
|
||||
get
|
||||
{
|
||||
return _max;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_max != value)
|
||||
{
|
||||
_max = value;
|
||||
Update(_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double value
|
||||
{
|
||||
get
|
||||
{
|
||||
return _value;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_value != value)
|
||||
{
|
||||
GTween.Kill(this, TweenPropType.Progress, false);
|
||||
|
||||
_value = value;
|
||||
Update(_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool reverse
|
||||
{
|
||||
get { return _reverse; }
|
||||
set { _reverse = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 动态改变进度值。
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="duration"></param>
|
||||
public GTweener TweenValue(double value, float duration)
|
||||
{
|
||||
double oldValule;
|
||||
|
||||
GTweener twener = GTween.GetTween(this, TweenPropType.Progress);
|
||||
if (twener != null)
|
||||
{
|
||||
oldValule = twener.value.d;
|
||||
twener.Kill(false);
|
||||
}
|
||||
else
|
||||
oldValule = _value;
|
||||
|
||||
_value = value;
|
||||
return GTween.ToDouble(oldValule, _value, duration)
|
||||
.SetEase(EaseType.Linear)
|
||||
.SetTarget(this, TweenPropType.Progress);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="newValue"></param>
|
||||
public void Update(double newValue)
|
||||
{
|
||||
float percent = Mathf.Clamp01((float)((newValue - _min) / (_max - _min)));
|
||||
if (_titleObject != null)
|
||||
{
|
||||
switch (_titleType)
|
||||
{
|
||||
case ProgressTitleType.Percent:
|
||||
if (RTLSupport.BaseDirection == RTLSupport.DirectionType.RTL)
|
||||
_titleObject.text = "%" + Mathf.FloorToInt(percent * 100);
|
||||
else
|
||||
_titleObject.text = Mathf.FloorToInt(percent * 100) + "%";
|
||||
break;
|
||||
|
||||
case ProgressTitleType.ValueAndMax:
|
||||
if (RTLSupport.BaseDirection == RTLSupport.DirectionType.RTL)
|
||||
_titleObject.text = Math.Round(max) + "/" + Math.Round(newValue);
|
||||
else
|
||||
_titleObject.text = Math.Round(newValue) + "/" + Math.Round(max);
|
||||
break;
|
||||
|
||||
case ProgressTitleType.Value:
|
||||
_titleObject.text = "" + Math.Round(newValue);
|
||||
break;
|
||||
|
||||
case ProgressTitleType.Max:
|
||||
_titleObject.text = "" + Math.Round(_max);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
float fullWidth = this.width - _barMaxWidthDelta;
|
||||
float fullHeight = this.height - _barMaxHeightDelta;
|
||||
if (!_reverse)
|
||||
{
|
||||
if (_barObjectH != null)
|
||||
{
|
||||
if (!SetFillAmount(_barObjectH, percent))
|
||||
_barObjectH.width = Mathf.RoundToInt(fullWidth * percent);
|
||||
}
|
||||
if (_barObjectV != null)
|
||||
{
|
||||
if (!SetFillAmount(_barObjectV, percent))
|
||||
_barObjectV.height = Mathf.RoundToInt(fullHeight * percent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_barObjectH != null)
|
||||
{
|
||||
if (!SetFillAmount(_barObjectH, 1 - percent))
|
||||
{
|
||||
_barObjectH.width = Mathf.RoundToInt(fullWidth * percent);
|
||||
_barObjectH.x = _barStartX + (fullWidth - _barObjectH.width);
|
||||
}
|
||||
}
|
||||
if (_barObjectV != null)
|
||||
{
|
||||
if (!SetFillAmount(_barObjectV, 1 - percent))
|
||||
{
|
||||
_barObjectV.height = Mathf.RoundToInt(fullHeight * percent);
|
||||
_barObjectV.y = _barStartY + (fullHeight - _barObjectV.height);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_aniObject != null)
|
||||
_aniObject.frame = Mathf.RoundToInt(percent * 100);
|
||||
|
||||
InvalidateBatchingState(true);
|
||||
}
|
||||
|
||||
bool SetFillAmount(GObject bar, float amount)
|
||||
{
|
||||
if ((bar is GImage) && ((GImage)bar).fillMethod != FillMethod.None)
|
||||
((GImage)bar).fillAmount = amount;
|
||||
else if ((bar is GLoader) && ((GLoader)bar).fillMethod != FillMethod.None)
|
||||
((GLoader)bar).fillAmount = amount;
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
override protected void ConstructExtension(ByteBuffer buffer)
|
||||
{
|
||||
buffer.Seek(0, 6);
|
||||
|
||||
_titleType = (ProgressTitleType)buffer.ReadByte();
|
||||
_reverse = buffer.ReadBool();
|
||||
|
||||
_titleObject = GetChild("title");
|
||||
_barObjectH = GetChild("bar");
|
||||
_barObjectV = GetChild("bar_v");
|
||||
_aniObject = GetChild("ani") as GMovieClip;
|
||||
|
||||
if (_barObjectH != null)
|
||||
{
|
||||
_barMaxWidth = _barObjectH.width;
|
||||
_barMaxWidthDelta = this.width - _barMaxWidth;
|
||||
_barStartX = _barObjectH.x;
|
||||
}
|
||||
if (_barObjectV != null)
|
||||
{
|
||||
_barMaxHeight = _barObjectV.height;
|
||||
_barMaxHeightDelta = this.height - _barMaxHeight;
|
||||
_barStartY = _barObjectV.y;
|
||||
}
|
||||
}
|
||||
|
||||
override public void Setup_AfterAdd(ByteBuffer buffer, int beginPos)
|
||||
{
|
||||
base.Setup_AfterAdd(buffer, beginPos);
|
||||
|
||||
if (!buffer.Seek(beginPos, 6))
|
||||
{
|
||||
Update(_value);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((ObjectType)buffer.ReadByte() != packageItem.objectType)
|
||||
{
|
||||
Update(_value);
|
||||
return;
|
||||
}
|
||||
|
||||
_value = buffer.ReadInt();
|
||||
_max = buffer.ReadInt();
|
||||
if (buffer.version >= 2)
|
||||
_min = buffer.ReadInt();
|
||||
|
||||
if (buffer.version >= 5)
|
||||
{
|
||||
string sound = buffer.ReadS();
|
||||
if (!string.IsNullOrEmpty(sound))
|
||||
{
|
||||
float volumeScale = buffer.ReadFloat();
|
||||
displayObject.onClick.Add(() =>
|
||||
{
|
||||
NAudioClip audioClip = UIPackage.GetItemAssetByURL(sound) as NAudioClip;
|
||||
if (audioClip != null && audioClip.nativeClip != null)
|
||||
Stage.inst.PlayOneShotSound(audioClip.nativeClip, volumeScale);
|
||||
});
|
||||
}
|
||||
else
|
||||
buffer.Skip(4);
|
||||
}
|
||||
|
||||
Update(_value);
|
||||
}
|
||||
|
||||
override protected void HandleSizeChanged()
|
||||
{
|
||||
base.HandleSizeChanged();
|
||||
|
||||
if (_barObjectH != null)
|
||||
_barMaxWidth = this.width - _barMaxWidthDelta;
|
||||
if (_barObjectV != null)
|
||||
_barMaxHeight = this.height - _barMaxHeightDelta;
|
||||
|
||||
if (!this.underConstruct)
|
||||
Update(_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user