/// <summary> /// /// </summary> /// <param name="popup"></param> /// <param name="target"></param> /// <param name="downward"></param> /// <returns></returns> public Vector2 GetPoupPosition(GObject popup, GObject target, object downward) { Vector2 pos; Vector2 size = Vector2.zero; if (target != null) { pos = target.LocalToRoot(Vector2.zero, this); size = target.LocalToRoot(target.size, this) - pos; } else { pos = this.GlobalToLocal(Stage.inst.touchPosition); } float xx, yy; xx = pos.x; if (xx + popup.width > this.width) { xx = xx + size.x - popup.width; } yy = pos.y + size.y; if ((downward == null && yy + popup.height > this.height) || downward != null && (bool)downward == false) { yy = pos.y - popup.height - 1; if (yy < 0) { yy = 0; xx += size.x / 2; } } return(new Vector2(Mathf.RoundToInt(xx), Mathf.RoundToInt(yy))); }
/// <summary> /// Start dragging. /// 开始拖动。 /// </summary> /// <param name="source">Source object. This is the object which initiated the dragging.</param> /// <param name="icon">Icon to be used as the dragging sign.</param> /// <param name="sourceData">Custom data. You can get it in the onDrop event data.</param> /// <param name="touchPointID">Copy the touchId from InputEvent to here, if has one.</param> public void StartDrag(GObject source, string icon, object sourceData, int touchPointID = -1) { if (_agent.parent != null) { return; } _sourceData = sourceData; _agent.url = icon; GRoot.inst.AddChild(_agent); _agent.xy = source.LocalToRoot(Vector2.zero, null); _agent.StartDrag(touchPointID); }
/// <summary> /// /// </summary> /// <param name="popup"></param> /// <param name="target"></param> /// <param name="downward"></param> /// <returns></returns> public Vector2 GetPoupPosition(GObject popup, GObject target, object downward) { Vector2 pos; Vector2 size = Vector2.zero; if (target != null) { pos = target.LocalToRoot(Vector2.zero, this); size = target.LocalToRoot(target.size, this) - pos; } else { pos = this.GlobalToLocal(Stage.inst.touchPosition); } float xx, yy; xx = pos.x; if (xx + popup.width > this.width) xx = xx + size.x - popup.width; yy = pos.y + size.y; if ((downward == null && yy + popup.height > this.height) || downward != null && (bool)downward == false) { yy = pos.y - popup.height - 1; if (yy < 0) { yy = 0; xx += size.x / 2; } } return new Vector2(Mathf.RoundToInt(xx), Mathf.RoundToInt(yy)); }
/// <summary> /// Start dragging. /// 开始拖动。 /// </summary> /// <param name="source">Source object. This is the object which initiated the dragging.</param> /// <param name="icon">Icon to be used as the dragging sign.</param> /// <param name="sourceData">Custom data. You can get it in the onDrop event data.</param> /// <param name="touchPointID">Copy the touchId from InputEvent to here, if has one.</param> public void StartDrag(GObject source, string icon, object sourceData, int touchPointID = -1) { if (_agent.parent != null) return; _sourceData = sourceData; _agent.url = icon; GRoot.inst.AddChild(_agent); _agent.xy = source.LocalToRoot(Vector2.zero, null); _agent.StartDrag(touchPointID); }