using FairyGUI; public class Card : GButton { GObject _back; GObject _front; public override void ConstructFromXML(FairyGUI.Utils.XML xml) { base.ConstructFromXML(xml); _back = GetChild("n0"); _front = GetChild("icon"); _front.visible = false; } public bool opened { get { return _front.visible; } set { GTween.Kill(this); _front.visible = value; _back.visible = !value; } } public void SetPerspective() { _front.displayObject.perspective = true; _back.displayObject.perspective = true; } public void Turn() { if (GTween.IsTweening(this)) { ET.Log.Debug("toopen,this"); GTween.To(180, 360, 0.5f).SetTarget(this).SetEase(EaseType.QuadOut).OnUpdate(TurnInTween).SetUserData(false); return; } bool toOpen = !_front.visible; ET.Log.Debug("toopen:" + toOpen); GTween.To(0, 180, 0.5f).SetTarget(this).SetEase(EaseType.QuadOut).OnUpdate(TurnInTween).SetUserData(toOpen); } void TurnInTween(GTweener tweener) { bool toOpen = (bool)tweener.userData; float v = tweener.value.x; if (toOpen) { _back.rotationY = v; _front.rotationY = -180 + v; if (v > 90) { _front.visible = true; _back.visible = false; } } else { _back.rotationY = -180 + v; _front.rotationY = v; if (v > 90) { _front.visible = false; _back.visible = true; } } } }