/** 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; } } }