|
|
using UnityEngine;
|
|
|
using System.Collections.Generic;
|
|
|
using FairyGUI;
|
|
|
|
|
|
public class BasicsMain : MonoBehaviour
|
|
|
{
|
|
|
private GComponent _mainView;
|
|
|
private GObject _backBtn;
|
|
|
private GComponent _demoContainer;
|
|
|
private Controller _viewController;
|
|
|
private Dictionary<string, GComponent> _demoObjects;
|
|
|
|
|
|
public Gradient lineGradient;
|
|
|
|
|
|
void Awake()
|
|
|
{
|
|
|
#if (UNITY_5 || UNITY_5_3_OR_NEWER)
|
|
|
//Use the font names directly
|
|
|
UIConfig.defaultFont = "Microsoft YaHei";
|
|
|
#else
|
|
|
//Need to put a ttf file into Resources folder. Here is the file name of the ttf file.
|
|
|
UIConfig.defaultFont = "afont";
|
|
|
#endif
|
|
|
UIPackage.AddPackage("UI/Basics");
|
|
|
|
|
|
UIConfig.verticalScrollBar = "ui://Basics/ScrollBar_VT";
|
|
|
UIConfig.horizontalScrollBar = "ui://Basics/ScrollBar_HZ";
|
|
|
UIConfig.popupMenu = "ui://Basics/PopupMenu";
|
|
|
UIConfig.buttonSound = (NAudioClip)UIPackage.GetItemAsset("Basics", "click");
|
|
|
}
|
|
|
|
|
|
void Start()
|
|
|
{
|
|
|
Application.targetFrameRate = 60;
|
|
|
Stage.inst.onKeyDown.Add(OnKeyDown);
|
|
|
|
|
|
_mainView = this.GetComponent<UIPanel>().ui;
|
|
|
|
|
|
_backBtn = _mainView.GetChild("btn_Back");
|
|
|
_backBtn.visible = false;
|
|
|
_backBtn.onClick.Add(onClickBack);
|
|
|
|
|
|
_demoContainer = _mainView.GetChild("container").asCom;
|
|
|
_viewController = _mainView.GetController("c1");
|
|
|
|
|
|
_demoObjects = new Dictionary<string, GComponent>();
|
|
|
|
|
|
int cnt = _mainView.numChildren;
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
{
|
|
|
GObject obj = _mainView.GetChildAt(i);
|
|
|
if (obj.group != null && obj.group.name == "btns")
|
|
|
obj.onClick.Add(runDemo);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void runDemo(EventContext context)
|
|
|
{
|
|
|
string type = ((GObject)(context.sender)).name.Substring(4);
|
|
|
GComponent obj;
|
|
|
if (!_demoObjects.TryGetValue(type, out obj))
|
|
|
{
|
|
|
obj = UIPackage.CreateObject("Basics", "Demo_" + type).asCom;
|
|
|
_demoObjects[type] = obj;
|
|
|
}
|
|
|
|
|
|
_demoContainer.RemoveChildren();
|
|
|
_demoContainer.AddChild(obj);
|
|
|
_viewController.selectedIndex = 1;
|
|
|
_backBtn.visible = true;
|
|
|
|
|
|
switch (type)
|
|
|
{
|
|
|
case "Graph":
|
|
|
PlayGraph();
|
|
|
break;
|
|
|
|
|
|
case "Button":
|
|
|
PlayButton();
|
|
|
break;
|
|
|
|
|
|
case "Text":
|
|
|
PlayText();
|
|
|
break;
|
|
|
|
|
|
case "Grid":
|
|
|
PlayGrid();
|
|
|
break;
|
|
|
|
|
|
case "Transition":
|
|
|
PlayTransition();
|
|
|
break;
|
|
|
|
|
|
case "Window":
|
|
|
PlayWindow();
|
|
|
break;
|
|
|
|
|
|
case "Popup":
|
|
|
PlayPopup();
|
|
|
break;
|
|
|
|
|
|
case "Drag&Drop":
|
|
|
PlayDragDrop();
|
|
|
break;
|
|
|
|
|
|
case "Depth":
|
|
|
PlayDepth();
|
|
|
break;
|
|
|
|
|
|
case "ProgressBar":
|
|
|
PlayProgressBar();
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void onClickBack()
|
|
|
{
|
|
|
_viewController.selectedIndex = 0;
|
|
|
_backBtn.visible = false;
|
|
|
}
|
|
|
|
|
|
void OnKeyDown(EventContext context)
|
|
|
{
|
|
|
if (context.inputEvent.keyCode == KeyCode.Escape)
|
|
|
{
|
|
|
Application.Quit();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//-----------------------------
|
|
|
private void PlayGraph()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Graph"];
|
|
|
|
|
|
Shape shape;
|
|
|
|
|
|
shape = obj.GetChild("pie").asGraph.shape;
|
|
|
EllipseMesh ellipse = shape.graphics.GetMeshFactory<EllipseMesh>();
|
|
|
ellipse.startDegree = 30;
|
|
|
ellipse.endDegreee = 300;
|
|
|
shape.graphics.SetMeshDirty();
|
|
|
|
|
|
shape = obj.GetChild("trapezoid").asGraph.shape;
|
|
|
PolygonMesh trapezoid = shape.graphics.GetMeshFactory<PolygonMesh>();
|
|
|
trapezoid.usePercentPositions = true;
|
|
|
trapezoid.points.Clear();
|
|
|
trapezoid.points.Add(new Vector2(0f, 1f));
|
|
|
trapezoid.points.Add(new Vector2(0.3f, 0));
|
|
|
trapezoid.points.Add(new Vector2(0.7f, 0));
|
|
|
trapezoid.points.Add(new Vector2(1f, 1f));
|
|
|
trapezoid.texcoords.Clear();
|
|
|
trapezoid.texcoords.AddRange(VertexBuffer.NormalizedUV);
|
|
|
shape.graphics.SetMeshDirty();
|
|
|
shape.graphics.texture = (NTexture)UIPackage.GetItemAsset("Basics", "change");
|
|
|
|
|
|
shape = obj.GetChild("line").asGraph.shape;
|
|
|
LineMesh line = shape.graphics.GetMeshFactory<LineMesh>();
|
|
|
line.lineWidthCurve = AnimationCurve.Linear(0, 25, 1, 10);
|
|
|
line.roundEdge = true;
|
|
|
line.gradient = lineGradient;
|
|
|
line.path.Create(new GPathPoint[] {
|
|
|
new GPathPoint(new Vector3(0, 120, 0)),
|
|
|
new GPathPoint(new Vector3(20, 120, 0)),
|
|
|
new GPathPoint(new Vector3(100, 100, 0)),
|
|
|
new GPathPoint(new Vector3(180, 30, 0)),
|
|
|
new GPathPoint(new Vector3(100, 0, 0)),
|
|
|
new GPathPoint(new Vector3(20, 30, 0)),
|
|
|
new GPathPoint(new Vector3(100, 100, 0)),
|
|
|
new GPathPoint(new Vector3(180, 120, 0)),
|
|
|
new GPathPoint(new Vector3(200, 120, 0)),
|
|
|
});
|
|
|
shape.graphics.SetMeshDirty();
|
|
|
GTween.To(0, 1, 5).SetEase(EaseType.Linear).SetTarget(shape.graphics).OnUpdate((GTweener t) =>
|
|
|
{
|
|
|
((NGraphics)t.target).GetMeshFactory<LineMesh>().fillEnd = t.value.x;
|
|
|
((NGraphics)t.target).SetMeshDirty();
|
|
|
});
|
|
|
|
|
|
shape = obj.GetChild("line2").asGraph.shape;
|
|
|
LineMesh line2 = shape.graphics.GetMeshFactory<LineMesh>();
|
|
|
line2.lineWidth = 3;
|
|
|
line2.roundEdge = true;
|
|
|
line2.path.Create(new GPathPoint[] {
|
|
|
new GPathPoint(new Vector3(0, 120, 0), GPathPoint.CurveType.Straight),
|
|
|
new GPathPoint(new Vector3(60, 30, 0), GPathPoint.CurveType.Straight),
|
|
|
new GPathPoint(new Vector3(80, 90, 0), GPathPoint.CurveType.Straight),
|
|
|
new GPathPoint(new Vector3(140, 30, 0), GPathPoint.CurveType.Straight),
|
|
|
new GPathPoint(new Vector3(160, 90, 0), GPathPoint.CurveType.Straight),
|
|
|
new GPathPoint(new Vector3(220, 30, 0), GPathPoint.CurveType.Straight)
|
|
|
});
|
|
|
shape.graphics.SetMeshDirty();
|
|
|
|
|
|
GObject image = obj.GetChild("line3");
|
|
|
LineMesh line3 = image.displayObject.graphics.GetMeshFactory<LineMesh>();
|
|
|
line3.lineWidth = 30;
|
|
|
line3.roundEdge = false;
|
|
|
line3.path.Create(new GPathPoint[] {
|
|
|
new GPathPoint(new Vector3(0, 30, 0), new Vector3(50, -30), new Vector3(150, -50)),
|
|
|
new GPathPoint(new Vector3(200, 30, 0), new Vector3(300, 130)),
|
|
|
new GPathPoint(new Vector3(400, 30, 0))
|
|
|
});
|
|
|
image.displayObject.graphics.SetMeshDirty();
|
|
|
}
|
|
|
|
|
|
//-----------------------------
|
|
|
private void PlayButton()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Button"];
|
|
|
obj.GetChild("n34").onClick.Add(() => { UnityEngine.Debug.Log("click button"); });
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private void PlayText()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Text"];
|
|
|
obj.GetChild("n12").asRichTextField.onClickLink.Add((EventContext context) =>
|
|
|
{
|
|
|
GRichTextField t = context.sender as GRichTextField;
|
|
|
t.text = "[img]ui://Basics/pet[/img][color=#FF0000]You click the link[/color]:" + context.data;
|
|
|
});
|
|
|
obj.GetChild("n25").onClick.Add(() =>
|
|
|
{
|
|
|
obj.GetChild("n24").text = obj.GetChild("n22").text;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private void PlayGrid()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Grid"];
|
|
|
GList list1 = obj.GetChild("list1").asList;
|
|
|
list1.RemoveChildrenToPool();
|
|
|
string[] testNames = System.Enum.GetNames(typeof(RuntimePlatform));
|
|
|
Color[] testColor = new Color[] { Color.yellow, Color.red, Color.white, Color.cyan };
|
|
|
int cnt = testNames.Length;
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
{
|
|
|
GButton item = list1.AddItemFromPool().asButton;
|
|
|
item.GetChild("t0").text = "" + (i + 1);
|
|
|
item.GetChild("t1").text = testNames[i];
|
|
|
item.GetChild("t2").asTextField.color = testColor[UnityEngine.Random.Range(0, 4)];
|
|
|
item.GetChild("star").asProgress.value = (int)((float)UnityEngine.Random.Range(1, 4) / 3f * 100);
|
|
|
}
|
|
|
|
|
|
GList list2 = obj.GetChild("list2").asList;
|
|
|
list2.RemoveChildrenToPool();
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
{
|
|
|
GButton item = list2.AddItemFromPool().asButton;
|
|
|
item.GetChild("cb").asButton.selected = false;
|
|
|
item.GetChild("t1").text = testNames[i];
|
|
|
item.GetChild("mc").asMovieClip.playing = i % 2 == 0;
|
|
|
item.GetChild("t3").text = "" + UnityEngine.Random.Range(0, 10000);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private void PlayTransition()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Transition"];
|
|
|
obj.GetChild("n2").asCom.GetTransition("t0").Play(int.MaxValue, 0, null);
|
|
|
obj.GetChild("n3").asCom.GetTransition("peng").Play(int.MaxValue, 0, null);
|
|
|
|
|
|
obj.onAddedToStage.Add(() =>
|
|
|
{
|
|
|
obj.GetChild("n2").asCom.GetTransition("t0").Stop();
|
|
|
obj.GetChild("n3").asCom.GetTransition("peng").Stop();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private Window _winA;
|
|
|
private Window _winB;
|
|
|
private void PlayWindow()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Window"];
|
|
|
obj.GetChild("n0").onClick.Add(() =>
|
|
|
{
|
|
|
if (_winA == null)
|
|
|
_winA = new Window1();
|
|
|
_winA.Show();
|
|
|
});
|
|
|
|
|
|
obj.GetChild("n1").onClick.Add(() =>
|
|
|
{
|
|
|
if (_winB == null)
|
|
|
_winB = new Window2();
|
|
|
_winB.Show();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private PopupMenu _pm;
|
|
|
private GComponent _popupCom;
|
|
|
private void PlayPopup()
|
|
|
{
|
|
|
if (_pm == null)
|
|
|
{
|
|
|
_pm = new PopupMenu();
|
|
|
_pm.AddItem("Item 1", __clickMenu);
|
|
|
_pm.AddItem("Item 2", __clickMenu);
|
|
|
_pm.AddItem("Item 3", __clickMenu);
|
|
|
_pm.AddItem("Item 4", __clickMenu);
|
|
|
}
|
|
|
|
|
|
if (_popupCom == null)
|
|
|
{
|
|
|
_popupCom = UIPackage.CreateObject("Basics", "Component12").asCom;
|
|
|
_popupCom.Center();
|
|
|
}
|
|
|
GComponent obj = _demoObjects["Popup"];
|
|
|
obj.GetChild("n0").onClick.Add((EventContext context) =>
|
|
|
{
|
|
|
_pm.Show((GObject)context.sender, PopupDirection.Down);
|
|
|
});
|
|
|
|
|
|
obj.GetChild("n1").onClick.Add(() =>
|
|
|
{
|
|
|
GRoot.inst.ShowPopup(_popupCom);
|
|
|
});
|
|
|
|
|
|
|
|
|
obj.onRightClick.Add(() =>
|
|
|
{
|
|
|
_pm.Show();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
private void __clickMenu(EventContext context)
|
|
|
{
|
|
|
GObject itemObject = (GObject)context.data;
|
|
|
UnityEngine.Debug.Log("click " + itemObject.text);
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
Vector2 startPos;
|
|
|
private void PlayDepth()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Depth"];
|
|
|
GComponent testContainer = obj.GetChild("n22").asCom;
|
|
|
GObject fixedObj = testContainer.GetChild("n0");
|
|
|
fixedObj.sortingOrder = 100;
|
|
|
fixedObj.draggable = true;
|
|
|
|
|
|
int numChildren = testContainer.numChildren;
|
|
|
int i = 0;
|
|
|
while (i < numChildren)
|
|
|
{
|
|
|
GObject child = testContainer.GetChildAt(i);
|
|
|
if (child != fixedObj)
|
|
|
{
|
|
|
testContainer.RemoveChildAt(i);
|
|
|
numChildren--;
|
|
|
}
|
|
|
else
|
|
|
i++;
|
|
|
}
|
|
|
startPos = new Vector2(fixedObj.x, fixedObj.y);
|
|
|
|
|
|
obj.GetChild("btn0").onClick.Add(() =>
|
|
|
{
|
|
|
GGraph graph = new GGraph();
|
|
|
startPos.x += 10;
|
|
|
startPos.y += 10;
|
|
|
graph.xy = startPos;
|
|
|
graph.DrawRect(150, 150, 1, Color.black, Color.red);
|
|
|
obj.GetChild("n22").asCom.AddChild(graph);
|
|
|
});
|
|
|
|
|
|
obj.GetChild("btn1").onClick.Add(() =>
|
|
|
{
|
|
|
GGraph graph = new GGraph();
|
|
|
startPos.x += 10;
|
|
|
startPos.y += 10;
|
|
|
graph.xy = startPos;
|
|
|
graph.DrawRect(150, 150, 1, Color.black, Color.green);
|
|
|
graph.sortingOrder = 200;
|
|
|
obj.GetChild("n22").asCom.AddChild(graph);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private void PlayDragDrop()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["Drag&Drop"];
|
|
|
obj.GetChild("a").draggable = true;
|
|
|
|
|
|
GButton b = obj.GetChild("b").asButton;
|
|
|
b.draggable = true;
|
|
|
b.onDragStart.Add((EventContext context) =>
|
|
|
{
|
|
|
//Cancel the original dragging, and start a new one with a agent.
|
|
|
context.PreventDefault();
|
|
|
|
|
|
DragDropManager.inst.StartDrag(b, b.icon, b.icon, (int)context.data);
|
|
|
});
|
|
|
|
|
|
GButton c = obj.GetChild("c").asButton;
|
|
|
c.icon = null;
|
|
|
c.onDrop.Add((EventContext context) =>
|
|
|
{
|
|
|
c.icon = (string)context.data;
|
|
|
});
|
|
|
|
|
|
GObject bounds = obj.GetChild("n7");
|
|
|
Rect rect = bounds.TransformRect(new Rect(0, 0, bounds.width, bounds.height), GRoot.inst);
|
|
|
|
|
|
//---!!Because at this time the container is on the right side of the stage and beginning to move to left(transition), so we need to caculate the final position
|
|
|
rect.x -= obj.parent.x;
|
|
|
//----
|
|
|
|
|
|
GButton d = obj.GetChild("d").asButton;
|
|
|
d.draggable = true;
|
|
|
d.dragBounds = rect;
|
|
|
}
|
|
|
|
|
|
//------------------------------
|
|
|
private void PlayProgressBar()
|
|
|
{
|
|
|
GComponent obj = _demoObjects["ProgressBar"];
|
|
|
Timers.inst.Add(0.001f, 0, __playProgress);
|
|
|
obj.onRemovedFromStage.Add(() => { Timers.inst.Remove(__playProgress); });
|
|
|
}
|
|
|
|
|
|
void __playProgress(object param)
|
|
|
{
|
|
|
GComponent obj = _demoObjects["ProgressBar"];
|
|
|
int cnt = obj.numChildren;
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
{
|
|
|
GProgressBar child = obj.GetChildAt(i) as GProgressBar;
|
|
|
if (child != null)
|
|
|
{
|
|
|
|
|
|
child.value += 1;
|
|
|
if (child.value > child.max)
|
|
|
child.value = 0;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} |