| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- using System;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- namespace FairyGUI
 
- {
 
-     /// <summary>
 
-     /// Helper for drag and drop.
 
-     /// 这是一个提供特殊拖放功能的功能类。与GObject.draggable不同,拖动开始后,他使用一个替代的图标作为拖动对象。
 
-     /// 当玩家释放鼠标/手指,目标组件会发出一个onDrop事件。
 
-     /// </summary>
 
-     public class DragDropManager
 
-     {
 
-         private GLoader _agent;
 
-         private object _sourceData;
 
-         private GObject _source;
 
-         private static DragDropManager _inst;
 
-         public static DragDropManager inst
 
-         {
 
-             get
 
-             {
 
-                 if (_inst == null)
 
-                     _inst = new DragDropManager();
 
-                 return _inst;
 
-             }
 
-         }
 
-         public DragDropManager()
 
-         {
 
-             _agent = (GLoader)UIObjectFactory.NewObject(ObjectType.Loader);
 
-             _agent.gameObjectName = "DragDropAgent";
 
-             _agent.SetHome(GRoot.inst);
 
-             _agent.touchable = false;//important
 
-             _agent.draggable = true;
 
-             _agent.SetSize(100, 100);
 
-             _agent.SetPivot(0.5f, 0.5f, true);
 
-             _agent.align = AlignType.Center;
 
-             _agent.verticalAlign = VertAlignType.Middle;
 
-             _agent.sortingOrder = int.MaxValue;
 
-             _agent.onDragEnd.Add(__dragEnd);
 
-         }
 
-         /// <summary>
 
-         /// Loader object for real dragging.
 
-         /// 用于实际拖动的Loader对象。你可以根据实际情况设置loader的大小,对齐等。
 
-         /// </summary>
 
-         public GLoader dragAgent
 
-         {
 
-             get { return _agent; }
 
-         }
 
-         /// <summary>
 
-         /// Is dragging?
 
-         /// 返回当前是否正在拖动。
 
-         /// </summary>
 
-         public bool dragging
 
-         {
 
-             get { return _agent.parent != null; }
 
-         }
 
-         /// <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;
 
-             _source = source;
 
-             _agent.url = icon;
 
-             GRoot.inst.AddChild(_agent);
 
-             _agent.xy = GRoot.inst.GlobalToLocal(Stage.inst.GetTouchPosition(touchPointID));
 
-             _agent.StartDrag(touchPointID);
 
-         }
 
-         /// <summary>
 
-         /// Cancel dragging.
 
-         /// 取消拖动。
 
-         /// </summary>
 
-         public void Cancel()
 
-         {
 
-             if (_agent.parent != null)
 
-             {
 
-                 _agent.StopDrag();
 
-                 GRoot.inst.RemoveChild(_agent);
 
-                 _sourceData = null;
 
-             }
 
-         }
 
-         private void __dragEnd(EventContext evt)
 
-         {
 
-             if (_agent.parent == null) //cancelled
 
-                 return;
 
-             GRoot.inst.RemoveChild(_agent);
 
-             object sourceData = _sourceData;
 
-             GObject source = _source;
 
-             _sourceData = null;
 
-             _source = null;
 
-             GObject obj = GRoot.inst.touchTarget;
 
-             while (obj != null)
 
-             {
 
-                 if (obj.hasEventListeners("onDrop"))
 
-                 {
 
-                     obj.RequestFocus();
 
-                     obj.DispatchEvent("onDrop", sourceData, source);
 
-                     return;
 
-                 }
 
-                 obj = obj.parent;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |