单一监听和分发监听

单一监听和分发监听

ID:42605812

大小:71.97 KB

页数:17页

时间:2019-09-18

单一监听和分发监听_第1页
单一监听和分发监听_第2页
单一监听和分发监听_第3页
单一监听和分发监听_第4页
单一监听和分发监听_第5页
资源描述:

《单一监听和分发监听》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、单一监听和分发监听这篇就来详细介绍下cocos2d对用户触屏的监听事件进行下分析(cocos2d有很多详细的文章和教程,我这里只是出于自己的理解来说)进入正题:从整体cocos2d对触屏的事件监听可以分为两种:1.单一监听,所谓单一监听其实是跟cocos2d引擎框架有关,因为在cocos2d中每个游戏界面都可以使用一个CCLayout完成,那么当一个CCLayout在屏幕显示出来后,想要监听用户的按键事件,一般都会使用以下形式来进行监听:(注意:这里是CCLayout类进行监听的方式)首先开启监听:1self.isTouchEnabled=YES;然后重写监听函

2、数即可:1234567891011121314//监听首次触发事件-(void)ccTouchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{}//触摸事件-当手指在屏幕上进行移动-(void)ccTouchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event{ }//触摸事件-当手指从屏幕抬起时调用的方法-(void)ccTouchesEnded:(NSSet*)toucheswithEvent:(UIEvent*)event{ }此种监听狠eazy,但是要注意这里是

3、对CCLayout类进行的监听方式;2.监听分发;刚才说了,游戏的每个界面可能都是一个CCLayout,但是如果我想让一个CCSprite精灵主角单独进行监听,或者说在CCLayout有很多个精灵我想单独监听其中的一种的时候,这时候就需要使用监听分发的形式了;假设我们自定义了一个类XX继承CCSprite,还有一个YY类也继承CCSprite,而且XX类型与YY类的实例都存在于一个Layout上,那么我想对XX与YY类型分别单独监听的话;首先我们先让当前继承的CCSprite类的XX于YY类都使用协议;(CCSprite中没有self.isTouchEnable

4、d=YES;这个函数,别直接写这个哦~)代码如下:123@interfaceXX:CCSprite{ }然后在当前实现类中重写一个函数如下:1234-(void)registerWithTouchDispatcher{[[CCTouchDispatchersharedDispatcher]addTargetedDelegate:selfpriority:0swallowsTouches:YES];}(此函数是注册监听,如果里面什么都不写,则当前不会相应任何触屏事件;)重写触摸的各事件函数,如下:1234567891011121314//监听首次触发事件-(BOO

5、L)ccTouchBegan:(UITouch*)touchwithEvent:(UIEvent*)event{returnNO;}//监听移动事件-(void)ccTouchMoved:(UITouch*)touchwithEvent:(UIEvent*)event{}//监听离开事件-(void)ccTouchEnded:(UITouch*)touchwithEvent:(UIEvent*)event{ }大家可以看到,此种监听方式除了各种监听函数与第一种类似之外,在ccTouchBegan的函数有个返回类型-布尔值;那么其作用下面详细介绍;如果XX与YY类

6、都实现了第二种监听方式的话,那么当用户触屏后,(当前用户触发的是XX与YY类实例所在的CCLayout)首先会进入XX或者YY的其中的ccTouchBegan函数中,这里假设首先进入了XX类中,那么XX类中的ccTouchBegan将会被响应,如果returntrue;表示不再将用户触屏的消息传递给YY类中进行响应,也就是说不再响应YY类中的ccTouchBegan函数,那么如果returnfalse;则会将当前触屏信息传递给其他注册过的类型中;一句话概括:return的值,如果是真则表明用户触摸事件已经被处理,其他不会再去进行监听;如果为假,则会继续交给其他注

7、册过的类型中进行处理;那么第二种监听的方式比较常用,这样便于处理,那么至于注册,一般都是放在onEnter函数中;onEnter函数是每个CCScene之间切换会被响应的函数,相当于是CCScene的生命周期函数,具体调用顺序如下:1234567891011121314151617181920212223242526//使用[CCDirectorreplaceScene:XX],替换场景时,会调用以下3个方法//调用顺序依次为://1.othterScene的+(id)Scene——>//2.otherScene的init——>//3.otherSc

8、ene的onEnter—

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。