Files
tianrunCRM/Assets/CoolapeFrame/Scripts/ui/public/CLAlert.cs

125 lines
3.4 KiB
C#
Raw Normal View History

2020-07-04 14:41:25 +08:00
using UnityEngine;
using System.Collections;
namespace Coolape
{
[RequireComponent (typeof(HUDText))]
public class CLAlert : MonoBehaviour
{
public static CLAlert self;
UIPanel panel;
HUDText hudText;
public string hudBackgroundSpriteName = "public_empty";
public UIBasicSprite.Type hudBackgroundSpriteType = UIBasicSprite.Type.Simple;
public int bgAnchorLeft = -5;
public int bgAnchorBottom = -5;
public int bgAnchorTop = 5;
public int bgAnchorRight = 5;
public Color hudBackgroundColor = Color.white;
public static SpriteHudPool pool = new SpriteHudPool ();
public CLAlert ()
{
self = this;
}
bool isFinishInit = false;
void Start ()
{
if (isFinishInit)
return;
isFinishInit = true;
hudText = GetComponent<HUDText> ();
panel = GetComponent<UIPanel> ();
}
static object beforeStr = "";
static long beforeTime = 0;
public static void add (object msg)
{
add (msg, Color.white, 0);
}
public static void add (object msg, Color color, float delayTime)
{
add (msg, color, delayTime, 1, true, Vector3.zero);
}
public static void add (object msg, Color color, float delayTime, float scaleOffset)
{
add (msg, color, delayTime, scaleOffset, true, Vector3.zero);
}
public static void add (object msg, Color color, float scaleOffset, Vector3 posOffset)
{
add (msg, color, 0, scaleOffset, true, posOffset);
}
public static void add (object msg, Color color, float delayTime, float scaleOffset, bool needBackGround , Vector3 posOffset)
{
if (msg == null)
return;
if (beforeStr.Equals (msg) && beforeTime - System.DateTime.Now.ToFileTime () / 10000 > 0) {
// 如果内容一样且要2秒内都不再弹出
return;
}
if (msg is string) {
msg = StrEx.trimStr (msg.ToString());
}
self.Start ();
self.panel.depth = CLUIInit.self.AlertRootDepth;
beforeStr = msg;
beforeTime = System.DateTime.Now.AddSeconds (2).ToFileTime () / 10000;
// Debug.Log(self.hudText);
UILabel label = self.hudText.Add (msg, color, delayTime, scaleOffset);
// Debug.LogError (posOffset);
self.hudText.transform.localPosition = posOffset;
if (needBackGround) {
if (label.transform.childCount > 0) {
Transform sp = label.transform.GetChild (0);
NGUITools.SetActive (sp.gameObject, true);
sp.GetComponent<UISprite>().depth = label.depth - 1;
} else {
UISprite sp = pool.borrowObject (self.hudBackgroundSpriteName);
if (sp != null) {
sp.transform.parent = label.transform;
sp.transform.localScale = Vector3.one;
sp.transform.localPosition = Vector3.zero;
sp.color = self.hudBackgroundColor;
sp.type = self.hudBackgroundSpriteType;
sp.depth = label.depth - 1;
sp.SetAnchor (label.gameObject, self.bgAnchorLeft, self.bgAnchorBottom, self.bgAnchorRight, self.bgAnchorTop);
NGUITools.SetActive (sp.gameObject, true);
sp.ResetAndUpdateAnchors ();
}
}
} else {
if (label.transform.childCount > 0) {
Transform sp = label.transform.GetChild (0);
NGUITools.SetActive (sp.gameObject, false);
}
}
}
}
public class SpriteHudPool : AbstractObjectPool<UISprite>
{
public override UISprite createObject (string name = null)
{
UISprite sp = NGUITools.AddSprite (HUDRoot.go, CLUIInit.self.emptAtlas, name);
sp.type = UIBasicSprite.Type.Sliced;
return sp;
}
public override UISprite resetObject (UISprite t)
{
return t;
}
}
}