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】——单点触摸的更多相关文章

  1. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  2. android开发之单点触摸

    相对于多点触摸,单点触摸还是很简单的. 新建一个工程,先看看布局文件: <RelativeLayout xmlns:android="http://schemas.android.co ...

  3. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  4. 【Cocos2D研究院之游戏开发】

    http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发]   201211-19 Co ...

  5. Cocos2d-x开发实例:单点触摸事件

    下面我们通过一个实例详细了解一下,层中单点触摸事件的实现过程.感受一下它的缺点和优点.该实例场景如下图所示,场景中有两个方块精灵,我们可以点击和移动它们.   下面我们看看HelloWorldScen ...

  6. cocos2d 游戏开发实战

    文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 & ...

  7. 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...

  8. [置顶] cocos2d-x 3.0游戏开发xcode5帅印博客教学 004.[HoldTail]主角的上下飞行跟移动

    cocos2d-x 3.0游戏开发xcode5帅印博客教学 004.[HoldTail]主角的上下飞行跟移动 写给大家的前言,在学习cocos2d-x的时候自己走了很多的弯路,也遇到了很多很多问题,不 ...

  9. Cocos2d-x示例:单点触摸事件

    为了让大家掌握Cocos2d-x中的事件机制,以下我们以触摸事件为例.使用事件触发器实现单点触摸事件.该实比如图8-3所看到的,场景中有三个方块精灵,显示顺序如图8-3所看到的,拖拽它们能够移动它们. ...

随机推荐

  1. Constructing Roads(spfa)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2493 #include <stdio.h ...

  2. bzoj 3172 单词

    3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3937  Solved: 1912[Submit][Status ...

  3. 工具分享2:Python 3.6.4、文本编辑器EditPlus、文本编辑器Geany

    工具官网下载地址: https://www.python.org/downloads/ python 3.6.0下载链接: 链接:https://pan.baidu.com/s/1snuSxsx 密码 ...

  4. MAC软连接

    在mac上不设置环境变量有的时候也可以直接就访问到了某些文件.这个是为什么呢?答案是用了软连接. 1 查看加载文件 可以使用cat命令查看paths文件 cat etc/paths /usr/loca ...

  5. BZOJ 3876 有上下界的网络流

    思路: 套用有上下界的网络流 就好了   (这算是裸题吧) 比如 有条 x->y 的边  流量上限为R 下限为L 那么du[x]-=L,du[y]+=L 流量上限变成R-L du[x]>0 ...

  6. poj3009 Curling 2.0 深搜

    PS:以前看到题目这么长就没写下去了.今天做了半天,没做出来.准备看题解,打开了网站都忍住了,最后还是靠自己做出来的.算是一点进步吧. 分析: 题目的意思没明白或者理解有偏差都没办法做题.看样例3和样 ...

  7. MSP430之software development flow

    MSP430 software development flow. 1) The shaded portion highlights the most common development path; ...

  8. OpenCV:OpenCV图像旋转的代码

    OpenCV图像旋转的代码 cv::transpose( bfM, bfM ) 前提:使用两个矩阵Mat型进行下标操作是不行的,耗费的时间太长了.直接使用两个指针对拷贝才是王道.不知道和OpenCV比 ...

  9. C# 获取 IEnumerable 集合的个数

    IEnumerable<DocApply> data1 = data.Where(n => n.DocName.Contains(search)); if (data1.GetEnu ...

  10. 团体程序设计天梯赛-练习集-L1-034. 点赞

    L1-034. 点赞 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持 ...