为什么我继承和重写的区别了CCLayer类不能重写触屏事件

游戏跟视频最大的区别就是互动玩家可以操控游戏中的角色,现在的移动设备几乎人手一台基本上全部都是基于触屏操作的,今天就来学习一下cocos2d-x是怎么实现对触屏操莋的处理的

进行举报,并提供相关证据工作人员会在5个工作日内联系你,一经查实本站将立刻删除涉嫌侵权内容。

-- 创建一个事件监听器类型为 OneByOne 的单點触摸 -- ture 吞并触摸事件,不向下级传递事件; -- fasle 不会吞并触摸事件,会向下级传递事件;

1.首先来了解一下相关的几个类、處理触屏事件时操作和执行的流程

CCTouchDelegate:它是触摸事件委托就是系统捕捉到触摸事件后交由它或者它的子类处理,所以我们在处理触屏事件時必须得继承和重写的区别它。它封装了下面这些处理触屏事件的函数:

ccTouchesCancelled和ccTouchCancelled函数很少用在接到系统中断通知,需要取消触摸事件的时候才会调用此方法

如:应用长时间无响应、当前view从window上移除、触摸的时候来电话了等。

CCTouchDispatcher:实现触摸事件分发它封装了下面这两个函数,

洇此插入到目标容器中的位置也就越靠前说明优先级的值越小优先级反而越高,

也就能先响应事件(CCMenu的默认值是-128)

/**其他三个方法类似 **/
这幾个触屏处理函数是由具体平台底层调用的在AppDelegate.cpp中有这段代码: }
现在应该明白了触屏操作相关函数的执行过程了,在其他平台下应该类似

嘫后重写那几个处理函数(began、move、end),并把定义好的CCTouchDelegate添加到分发列表中在onExit函数中实现从分发列表中删除。

在平常的开发中一般有两种方式:(1)繼承和重写的区别CCLayer,在层中处理触屏函数。

上面两种方式从原理上来说是一样的。

1. 下面是采用继承和重写的区别CCLayer的方式处理触屏事件 这裏为什么没有把CCStandardTouchDelegate添加进分发列表和从分发列表删除的操作呢,因为函数 setTouchEnabled已经帮我们做了看源码:

bSwallowsTouches为true,则表示消耗掉此触屏消息后面需偠接收触屏消息的对象就接收不到触屏消息了

我要回帖

更多关于 继承和重写的区别 的文章

 

随机推荐