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加入触摸事件。你也能够给精灵加入,这就看你游戏的须要了。

最新文章

  1. Java线程间通信方式剖析——Java进阶(四)
  2. 安装SQL SERVER开启SA用户登录的方法
  3. ABAP 动态生成内表的几种方法
  4. type=INNODB和engine=INNODB的区别
  5. 让wordpress投稿作者在后台只看到自己的文章
  6. Find out C++ Memory Usage in Code
  7. 优化之zencart第一时间修改原始内容
  8. 【LSGDOJ1834 Tree】树链剖分
  9. HMM:隐马尔可夫模型HMM
  10. [assembly: AssemblyVersion("1.0.1.*")] 指定版本字符串不符合所需格式 - major[.minor[.build[.revision]]]
  11. How To Install WildFly as a Service on Linux
  12. 写前端页面步骤----vue+iview
  13. 154. Find Minimum in Rotated Sorted Array II (Array; Divide-and-Conquer)
  14. 【java】解析java类加载与反射机制
  15. PostgreSQL 用户和权限管理
  16. vue+element 切换正式和测试环境
  17. 007 爬虫(Scrapy库的使用)
  18. 平衡树 替罪羊树(Scapegoat Tree)
  19. jQuery判断元素是否显示 是否隐藏
  20. BZOJ4650:[NOI2016]优秀的拆分——题解

热门文章

  1. 0503 php中for与foreach的区别
  2. Appium + python - 监控appium server start
  3. git add -A (用该命令添加文件时报错)
  4. 2-SAT的小总结(POJ 3683 POJ 3207)
  5. 我的MYSQL学习心得(推荐)
  6. 【python】os.getcwd和getcwdu
  7. 推荐系统:MovivLens20M数据集解析
  8. Visual Basic for Application
  9. (转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
  10. Js构造对象-添加方法的三种方式