Exemplo n.º 1
0
    void Awake()
    {
        //下面使用delegate 的方法触发回调比 SendMessage 效率更高。把下面注释掉就是使用SendMessage触发。
        //使用delegate方法,回调方法名不能写成跟SendMessage目标方法名一样,否则点一下回调会触发两次

        gameObject.AddComponent <ScreenRaycaster>();

        fingerDownDetector               = gameObject.AddComponent <FingerDownDetector>();
        fingerDownDetector.enabled       = false;
        fingerDownDetector.OnFingerDown += FingerDownEventHandler;

        fingerHoverDetector                = gameObject.AddComponent <FingerHoverDetector>();
        fingerHoverDetector.enabled        = false;
        fingerHoverDetector.OnFingerHover += FingerHoverEventHandler;

        fingerMotionDetector                     = gameObject.AddComponent <FingerMotionDetector>();
        fingerMotionDetector.enabled             = false;
        fingerMotionDetector.OnFingerMove       += FingerMoveEventHandler;
        fingerMotionDetector.OnFingerStationary += FingerStationaryEventHandler;

        fingerUpDetector             = gameObject.AddComponent <FingerUpDetector>();
        fingerUpDetector.enabled     = false;
        fingerUpDetector.OnFingerUp += FingerUpEventHandler;

        dragRecognizer         = gameObject.AddComponent <DragRecognizer>();
        dragRecognizer.enabled = false;
        //只有在固定finger数的情况下才会触发。
        dragRecognizer.IsExclusive   = true;
        dragRecognizer.MoveTolerance = 0;
        dragRecognizer.OnGesture    += FirstFingerDragEventHandler;

        longPressRecognizer            = gameObject.AddComponent <LongPressRecognizer>();
        longPressRecognizer.enabled    = false;
        longPressRecognizer.OnGesture += LongPressEventHandler;

        tapRecognizer             = gameObject.AddComponent <TapRecognizer>();
        tapRecognizer.enabled     = false;
        tapRecognizer.IsExclusive = true;
        tapRecognizer.OnGesture  += TapEventHandler;

        doubleTapRecognizer              = gameObject.AddComponent <TapRecognizer>();
        doubleTapRecognizer.enabled      = false;
        doubleTapRecognizer.RequiredTaps = 2;
        doubleTapRecognizer.OnGesture   += DoubleTapEventHandler;

        swipeRecognizer            = gameObject.AddComponent <SwipeRecognizer>();
        swipeRecognizer.enabled    = false;
        swipeRecognizer.OnGesture += SwipeEventHandler;

        pinchRecognizer             = gameObject.AddComponent <PinchRecognizer>();
        pinchRecognizer.enabled     = false;
        pinchRecognizer.MinDistance = 0;
        pinchRecognizer.MinDOT      = 0;
        pinchRecognizer.OnGesture  += PinchEventHandler;

        twistRecognizer            = gameObject.AddComponent <TwistRecognizer>();
        twistRecognizer.enabled    = false;
        twistRecognizer.OnGesture += TwistEventHandler;
    }
Exemplo n.º 2
0
    void Start()
    {
        if (!MessageTarget)
        {
            MessageTarget = this.gameObject;
        }

        screenRaycaster = GetComponent <ScreenRaycaster>();
        if (!screenRaycaster)
        {
            screenRaycaster = gameObject.AddComponent <ScreenRaycaster>();
        }

        // Create the FG instance if not already available
        if (!FingerGestures.Instance)
        {
            gameObject.AddComponent <FingerGestures>();
        }

        GameObject fingerEventsNode = CreateChildNode("Finger Event Detectors");
        {
            FingerDown   = AddFingerEventDetector <FingerDownDetector>(fingerEventsNode);
            FingerUp     = AddFingerEventDetector <FingerUpDetector>(fingerEventsNode);
            FingerMotion = AddFingerEventDetector <FingerMotionDetector>(fingerEventsNode);
            FingerHover  = AddFingerEventDetector <FingerHoverDetector>(fingerEventsNode);
        }

        GameObject singleFingerGestureNode = CreateChildNode("Single Finger Gestures");
        {
            Drag      = AddSingleFingerGesture <DragRecognizer>(singleFingerGestureNode);
            Tap       = AddSingleFingerGesture <TapRecognizer>(singleFingerGestureNode);
            Swipe     = AddSingleFingerGesture <SwipeRecognizer>(singleFingerGestureNode);
            LongPress = AddSingleFingerGesture <LongPressRecognizer>(singleFingerGestureNode);

            DoubleTap = AddSingleFingerGesture <TapRecognizer>(singleFingerGestureNode);
            DoubleTap.RequiredTaps     = 2;
            DoubleTap.EventMessageName = "OnDoubleTap";
        }

        GameObject twoFingerGestures = CreateChildNode("Two-Finger Gestures");
        {
            Pinch              = AddTwoFingerGesture <PinchRecognizer>(twoFingerGestures);
            Twist              = AddTwoFingerGesture <TwistRecognizer>(twoFingerGestures);
            TwoFingerDrag      = AddTwoFingerGesture <DragRecognizer>(twoFingerGestures, "OnTwoFingerDrag");
            TwoFingerTap       = AddTwoFingerGesture <TapRecognizer>(twoFingerGestures, "OnTwoFingerTap");
            TwoFingerSwipe     = AddTwoFingerGesture <SwipeRecognizer>(twoFingerGestures, "OnTwoFingerSwipe");
            TwoFingerLongPress = AddTwoFingerGesture <LongPressRecognizer>(twoFingerGestures, "OnTwoFingerLongPress");
        }

        // we're done, remove component (but not game object)
        // Destroy( this );
    }
        protected override void OnRegister()
        {
            base.OnRegister();

            enableGestureController.AddListener(EnableGestureSignalEvent);

            mTapRecognizer = gameObject.AddComponent <TapRecognizer> ();
            mTapRecognizer.UseSendMessage = false;
            mTapRecognizer.IsExclusive    = true;

            mSwipeRecognizer = gameObject.AddComponent <SwipeRecognizer> ();
            mSwipeRecognizer.UseSendMessage = false;
            mSwipeRecognizer.IsExclusive    = true;

            mDragRecognizer = gameObject.AddComponent <DragRecognizer> ();
            mDragRecognizer.UseSendMessage = false;
            mDragRecognizer.IsExclusive    = true;

            mTwoFingerDragRecognizer = gameObject.AddComponent <DragRecognizer> ();
            mTwoFingerDragRecognizer.RequiredFingerCount = 2;
            mTwoFingerDragRecognizer.UseSendMessage      = false;
            mTwoFingerDragRecognizer.IsExclusive         = true;

            mPinchRecognizer = gameObject.AddComponent <PinchRecognizer> ();
            mPinchRecognizer.UseSendMessage = false;
            mPinchRecognizer.IsExclusive    = true;

            mTwistRecognizer = gameObject.AddComponent <TwistRecognizer> ();
            mTwistRecognizer.UseSendMessage = false;
            mTwistRecognizer.IsExclusive    = true;

//			mPressRecognizer = gameObject.AddComponent<LongPressRecognizer> ();
//			mPressRecognizer.UseSendMessage = false;
//			mPressRecognizer.IsExclusive = true;

            mFingeDown = gameObject.AddComponent <FingerDownDetector> ();
            mFingeUp   = gameObject.AddComponent <FingerUpDetector> ();

            mTapRecognizer.OnGesture           += OnSceneTap;
            mDragRecognizer.OnGesture          += OnSceneDrag;
            mPinchRecognizer.OnGesture         += OnScenePinch;
            mSwipeRecognizer.OnGesture         += OnSceneSwipe;
            mTwoFingerDragRecognizer.OnGesture += OnSceneTwoFingerDrag;
            mTwistRecognizer.OnGesture         += OnSceneTwist;
            mFingeDown.OnFingerDown            += OnSceneDown;
            mFingeUp.OnFingerUp += OnSceneUp;
        }