quick-cocos2d-x游戏开发【9】——单点触摸
来源:互联网 发布:plsql导入表数据库 编辑:程序博客网 时间:2024/05/22 14:59
quick的触摸机制,我想廖大已经在这篇文章里说的很清楚了,我们这些小辈们就是在他的基础上完备一下,说说用法就可以了,嘿嘿。
在2.2.3之前的版本(不包括2.2.3),触摸机制和廖大在那篇文章里面的说的一样,添加触摸响应采用addTouchEventListener来完成,不过在此之后,对触摸机制就进行了完全的改写,和cocos2dx 3.0的版本一样,采用更加灵活的CCNode事件分发机制。
如果你对cocos 3.0中触摸机制很了解,那么quick的触摸使用起来也很方便。直接来看怎么用。
在前面已经说了,我们添加的节点元素都是在scene中的,但是触摸响应不能直接给scene添加事件监听,所以我们可以用一个层来完成。并且,如果能够接受触摸响应,还需要开启触摸功能。
- local layer = display.newLayer()
- self:addChild(layer)
- layer:setTouchEnabled(true)
- layer:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)
- layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function (event)
- local x, y, prevX, prevY = event.x, event.y, event.prevX, event.prevY
- if event.name == "began" then
- print("layer began")
- elseif event.name == "moved" then
- print("layer moved")
- elseif event.name == "ended" then
- print("layer ended")
- end
- return true
- end)
从上面的代码可以看到,可以设置触摸的模式,
cc.TOUCH_MODE_ONE_BY_ONE 是单点触摸
cc.TOUCH_MODE_ALL_AT_ONCE 是多点触摸
在添加节点事件监听addNodeEventListener中,我们设置监听事件的类型是cc.NODE_TOUCH_EVENT
这个监听事件类型,其定义了几个引擎级事件,分别是,
-- cocos2dx 引擎级事件
c.NODE_EVENT = 0
c.NODE_ENTER_FRAME_EVENT = 1
c.NODE_TOUCH_EVENT = 2
c.NODE_TOUCH_CAPTURE_EVENT = 3
c.MENU_ITEM_CLICKED_EVENT = 4
c.ACCELERATE_EVENT = 5
c.KEYPAD_EVENT = 6
其次是event参数,在event参数里,里面有name,x,y,prevX,prevY 这五个变量,分别代表着
-- event.name 是触摸事件的状态:began, moved, ended, cancelled, added(仅限多点触摸), removed(仅限多点触摸)
-- event.x, event.y 是触摸点当前位置
-- event.prevX, event.prevY 是触摸点之前的位置
所以添加上面的代码,简单触摸屏幕,就可以看到log中的print的结果。
在触摸的回调函数function(event)中,记得考虑是否需要添加返回值,返回值的作用不用多说,true则后面的moved,ended等状态会接收到,否则接收不到,默认如果不添加则代表false。
在新版触摸机制中,还需要主要的一个就是触摸吞噬,
setTouchSwallowEnabled(true)
它的作用就是是否继续传递触摸消息,在绘制节点的时候,越是在屏幕上方,就是zOrder越大,越优先接收到触摸事件,如果设置吞噬,那么在它下方的节点都不会接收到触摸消息了。默认如果不设置则quick自动设置为true。
当然,不仅仅可以给layer添加触摸事件,你也可以给精灵添加,这就看你游戏的需要了。
- quick-cocos2d-x游戏开发【9】——单点触摸
- quick-cocos2d-x游戏开发【9】——单点触摸
- quick-cocos2d-x游戏开发【11】——多点触摸
- quick-cocos2d-x游戏开发【11】——多点触摸
- quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- Quick-Cocos2d-x游戏开发触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- Cocos2d-x游戏开发之处理单点触摸事件
- quick-cocos2d-x游戏开发【4】——添加文本
- quick-cocos2d-x游戏开发【5】——创建菜单
- quick-cocos2d-x游戏开发【7】——scheduler 定时器
- quick-cocos2d-x游戏开发【14】——StateMachine状态机
- quick-cocos2d-x游戏开发——StateMachine状态机
- quick-cocos2d-x游戏开发【4】——添加文本
- quick-cocos2d-x游戏开发【5】——创建菜单
- quick-cocos2d-x游戏开发【7】——scheduler 定时器
- quick-cocos2d-x游戏开发【14】——StateMachine状态机
- quick-cocos2d-x游戏开发——StateMachine状态机
- 捕获IOS APP中出现的异常
- 【总结】SVN提交失败
- 分析ffmpeg解析ts流信息的源码
- HDU 1075 What Are You Talking About
- linux下vi命令大全
- quick-cocos2d-x游戏开发【9】——单点触摸
- 服务器TCP配置
- Nginx 战斗准备:优化指南
- spring mvc前台时间字符串到后台Date的转换
- PostgreSQL的外部表使用
- HDU 1247 Hat’s Words
- hibernate多对多映射
- quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- Android利用画图类和线程画出闪烁心形