quick-cocos2d-x游戏开发【11】——多点触摸

在前面已经谈过单点触摸的用法了,所以对于多点触摸来说,也是非常简单容易的。

多点触摸其拥有added,removed这么两个独有事件。

added  屏幕中增加了一个触点

removed  屏幕中移除了一个触点

另外,还有这么一个变量,

event.points  屏幕中全部触点数组

结合单点触摸的几个事件,所以多点触摸事件发生时,会有began,added,moved,removed,ended,canclled这些响应事件。

你可能会疑惑began和added触发的顺序,我们在使用cocos2d-x c++的时候,多点触摸还是写在began当中,只是触摸点参数是一个集合,包含了全部触点的信息。但在quick中,将多点信息封装得更加方便。当第一个触点触摸到屏幕时,响应的是began事件,之后再有触点在屏幕时,就会触发added事件了,这样一来,我们就能清楚的知道玩家什么时候第二个手指也接触到屏幕了。如果在c++中,就需要再写些代码来判断了。

因此,removed和ended响应事件也就容易理解了触发顺序了,当有触点离开屏幕时,只要event.points中触点的个数大于等于2,那么会响应removed事件,当屏幕中最后一个触点离开时,会响应ended事件。

对于event.points中每个触点的信息,我们通过循环就可以依次获取了。

for id, point in pairs(event.points) do
    printf("%d, %f, %f", id, event.points[id].x, event.points[id].y)
end

是不是很简单,好了,咱们来个完整点的代码,

function MyScene:ctor()	

    local layer = display.newLayer()
    self:addChild(layer)
    layer:setTouchEnabled(true)
    layer:setTouchMode(cc.TOUCH_MODE_ALL_AT_ONCE)
    layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function (event)
        if event.name == "began" or event.name == "added" then
            for id, point in pairs(event.points) do
                printf("%d, %f, %f", id, event.points[id].x, event.points[id].y)
            end
        elseif event.name == "removed" then
            print("touch removed")
        elseif event.name == "moved" then
            print("touch moved")
        elseif event.name == "ended" then
            print("touch ended")
        end

        return true
    end)

end

不过这个测试,只有放到真机上检验了,quick的模拟器还只能做单点检测。

此外,还要说明的一个就是,单点和多点触摸的区域,一旦一个node上有多个精灵,那么它的触摸响应区域则是它们共同区域的大小,下图中红色区域的大小。

这里要更正一个小问题,在第二节创建场景中,newScene的参数是场景的名称,这里需要和创建的lua文件名称相同,否则虽然在模拟器中运行没有问题,在android设备上就会提示没有找到这个lua文件。

所以我们之前创建的MyScene.lua文件,里面的代码需要更正下。

local MyScene = class("MyScene", function ()
    return display.newScene("MyScene") --场景名称要一致
end) 
时间: 2024-09-30 04:18:54

quick-cocos2d-x游戏开发【11】——多点触摸的相关文章

基于Visual C++2010与windows SDK fo windows7开发Windows 7的多点触摸特性应用

2008年5月28日,微软即将退休的精神领袖比尔·盖茨和首席执行官史蒂夫·鲍尔默共同在北圣地亚哥四季艾维亚拉洲际度假村举办的2008 D6 All Things数字化大会上向到场的嘉宾展示了windows7的测试版.     鲍尔默向记者打趣道:"今天只给你们看一丁点儿(just a snippet)哟!"然而就是那么一丁点儿,已经让世界为之惊艳! 盖茨和鲍尔默在D6 All Things数字化大会上重点展示的是多触点技术(multitouch technology),这是运行Wind

Cocos2d-x手机游戏开发视频教程 手游入门到精通视频教程

Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的.Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架. 手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容.Cocos2d-x项目可以很容易地建立和运行在iOS,Android,黑莓Blackberry等操作系统中. Cocos2d-x还支持Windows.Mac和Linux等桌面操作系统,因此,开发者编写的源代码很容易在桌面操作系统中编辑和调试. 当前3G技

Cocos2d-x手机游戏开发视频教程

Cocos2d-x跨平台手机游戏开发配4个项目(引擎应用,单点和多点触摸.瓦片地图.骨骼动画)适合人群:高级课时数量:60课时用到技术:cocos2d-x引擎.单点和多点触摸.瓦片地图.骨骼动画.数据库.json字符串涉及项目:飞机大战项目.超级玛丽项目.打地鼠项目.天天爱消除项目咨询qq:1840215592课程简介:Cocos2d-x视频教程通过4个种类各不相同的实战项目,展示了cocos2d-x的卓越性能.并且将CocoStudio工具的使用.单点和多点触摸.瓦片地图.骨骼动画.数据库.j

史上最全最完整的IOS 游戏开发 PDF电子书定制下载

<iOS 5游戏开发>作者:(新西兰)James·Sugrue著 页数:191 出版社:北京市:人民邮电出版社 出版日期:2012.08 简介:<iOS5游戏开发>是一本iOS5游戏开发的基础入门书.全书使用通俗易懂的简单实例,带领读者经历构建经典动作游戏的整个周期.读者在本书的阅读过程中,将经历从开发概念.规划设计一直到编写实际代码的全过过程.本书的每一章,都将演示游戏创建过程中的一个逻辑步骤,读者将在其中学习如何创建Sprite,用触摸屏.重力感应器和屏幕游戏棒控制玩家角色等-

【Cocos2D研究院之游戏开发】

http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Cocos2D研究院之打开全新ViewController与返回(八) 雨松MOMO [Cocos2D研究院之游戏开发] 围观5745次 17条评论          之前cocos2d的文章都是由魏凯同学维护,从今天开始我也会抽时间写点cocos2d的文章.最近在研究如何将IOS游戏与软件结合起来.通常游

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检测

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其它的植物只需触摸那个植物将其拖入到想要摆放的位置,这其实就是这节要写的触摸事件.还可以发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自动消失,这就这节要说的碰撞检测. 下面具体看代码的实现: 做ios开发有触摸事件cocos2d同样也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { private: v

quick-cocos2d-x游戏开发【9】——单点触摸

quick的触摸机制,我想廖大已经在这篇文章里说的很清楚了,我们这些小辈们就是在他的基础上完备一下,说说用法就可以了,嘿嘿. 在2.2.3之前的版本(不包括2.2.3),触摸机制和廖大在那篇文章里面的说的一样,添加触摸响应采用addTouchEventListener来完成,不过在此之后,对触摸机制就进行了完全的改写,和cocos2dx 3.0的版本一样,采用更加灵活的CCNode事件分发机制. 如果你对cocos 3.0中触摸机制很了解,那么quick的触摸使用起来也很方便.直接来看怎么用.

quojs 及 转:11个处理触摸事件和多点触摸的JS库

QuoJs官方文档http://www.360doc.com/content/15/0504/18/11984479_468037372.shtml ==== 11个处理触摸事件和多点触摸的JS库 摘要:触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借助浏览器的触摸事件来实现. 触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借

ios开发——实用技术篇Swift篇&amp;多点触摸与手势识别

多点触摸与手势识别 1 2 //点击事件 3 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") 4 self.view.addGestureRecognizer(atap) 5 atap.numberOfTapsRequired = 1 //单击次数 6 atap.numberOfTouchesRequired = 1 //手指个数 7 8 //拖动事件 9 var aPan = UIPanGesture