Beispiel #1
0
        /** Hackish stuff - stole touches from other CCTouchDispatcher targeted delegates.
         * Used to claim touch without receiving ccTouchBegan. */
        void claimTouch(UITouch aTouch)
        {
            CCTouchDispatcher dispatcher = CCDirector.sharedDirector.touchDispatcher;

            // Enumerate through all targeted handlers.

            var enumerator = dispatcher.getTargetedHandlers().GetEnumerator();

            while (enumerator.MoveNext())
            {
                CCTargetedTouchHandler handler = (CCTargetedTouchHandler)enumerator.Current;
                // Only our handler should claim the touch.
                if (handler.delegate_ == this)
                {
                    if (!(handler.claimedTouches.Contains(aTouch)))
                    {
                        handler.claimedTouches.Add(aTouch);
                    }
                }
                else
                {
                    // Steal touch from other targeted delegates, if they claimed it.
                    if (handler.claimedTouches.Contains(aTouch))
                    {
                        CCTouchOneByOneDelegate oneByOneTouchDelegate = (CCTouchOneByOneDelegate)handler.delegate_;
                        if (oneByOneTouchDelegate != null)
                        {
                            oneByOneTouchDelegate.ccTouchCancelled(aTouch);
                        }
                        handler.claimedTouches.Remove(aTouch);
                    }
                }
            }
        }
        public void addTargetedDelegate(CCTouchOneByOneDelegate aDelegate, int priority, bool swallowsTouches)
        {
            CCTouchHandler handler = new CCTargetedTouchHandler(aDelegate, priority, swallowsTouches);

            if (!locked)
            {
                forceAddHandler(handler, targetedHandlers);
            }
            else
            {
                if (!removeDelegate(aDelegate, handlersToRemove))
                {
                    handlersToAdd.Add(handler);
                    toAdd = true;
                }
            }
        }
		public void addTargetedDelegate(CCTouchOneByOneDelegate aDelegate, int priority, bool swallowsTouches)
		{
			CCTouchHandler handler = new CCTargetedTouchHandler(aDelegate, priority, swallowsTouches);
			if( ! locked ) {
				forceAddHandler(handler, targetedHandlers);
			} else {
				if(!removeDelegate(aDelegate, handlersToRemove)){
					handlersToAdd.Add(handler);
					toAdd = true;
				}
			}
		}