CCLayer中使用registerWithTouchDispatcher注册CCTouchDispatcher

来源:互联网 发布:淘宝可以要发票吗 编辑:程序博客网 时间:2024/05/17 09:27

                             CCLayer中使用registerWithTouchDispatcher注册CCTouchDispatcher

     在CCLayer中经常要注册CCTouchDispatcher来让Layer处理Touch事件。

   1.设置  

self.isTouchEnabled=YES;


   2.
    一般情况下我都是在init里面写上如下代码来让Layer注册到CCTouchDispatcher:

    CCTouchDispatcher* dispatch = [CCTouchDispatcher sharedDispatcher];
[dispatch addTargetedDelegate:self priority:INT32_MIN+1 swallowsTouches:YES];

   然后在dealloc中写上如下代码来让Layer从CCTouchDispatcher中移除:

   [[CCTouchDispatcher sharedDispatcher] removeDelegate:self];


   或者 在OnEnter中 注册,在OnExit中移除注册。

 3.现在发现一个更好的办法,直接重写 CCLayer的 

registerWithTouchDispatcher方法,代码如下:


 -(void) registerWithTouchDispatcher
{
CCTouchDispatcher* dispatch = [CCTouchDispatcher sharedDispatcher];
[dispatch addTargetedDelegate:self priority:INT32_MIN+1 swallowsTouches:YES];
}


查看CCLayer中对registerWithTouchDispatcher的相关调用,可以看到在CCLayer中的OnEnter中调用了

registerWithTouchDispatcher,而在OnExit也实现了对self在 CCTouchDispatcher中的移除。


所以只要实现registerWithTouchDispatcher就好了,其他都不需要操心,也不需要关心self在 CCTouchDispatcher中的移除。


原创粉丝点击