Cocos2d-JS 触摸事件

cocos2d-js | 使用物理引擎chipmunk创建物理世界场景和物理精灵层以及添加触摸事件 说一下大致思路。(嘿嘿我也是看完别人的博客总结的,加上自己的理解,自己怎么可能去看源码嘛!(难道你们不是么。。。)) 首先,在工程目录里打开project.json文件, { "project_type": "javascript", "debugMode" : 1, "showFPS" : true, "frameRate" : 60, "noCa. 阅读详情
触摸事件的时间方面
触摸事件有两个事件监听器:cc.EventListener.TOUCH_ONE_BY_ONE和cc.EventListener.TOUCH_ALL_AT_ONCE,分别对应单点触摸和多点触摸。这些监听器有一些触摸事件响应属性,这些属性对应着触摸事件不同阶段。通过设置这些属性能够实现事件与事件处理者函数的关联。
单点触摸事件的响应属性如下:
(1)onTouchBegan。当一个手指触摸屏幕时回调该函数所指定的函数。如果函数返回值为true,则可以回调后面的两个属性(onTouchMoved和onTouchEnded)所指定的函数,否则不回调。
(2)onTouchMoved。当一个手指在屏幕移动时2回调该属性所指定的函数
(3)onTouchEnded。当一个手指离开屏幕时回调该属性所指定的函数。
(4)onTouchCancelled。当单点触摸事件被取消时回调该属性所指定的函数。
多点触摸事件的响应属性如下:
(1)onTouchesBegan。当多个手指触摸屏幕时回调该属性所指定的函数
(2)onTouchesMoved。当多个手指在屏幕上移动时回调该属性所指定的函数
(3)onTouchesEnded。当多个手指离开屏幕时回调该属性所指定的函数
(4)ouTouchesCancelled。当多点触摸事件被取消时回调该属性所指定的函数。
使用这些属性的代码片段演示了它们的使用
var listener = cc.EventListener.create({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
onTouchBegan:function(touch,event){
…
return false;
}
});
首先需要使用cc.EventListener.create()函数创建事件监听器对象。然后设置它的event属性为cc.EventLitener。TOUCH_ONE_BY_ONE,表示为监听单点触摸事件。设置onTouchBegan属性响应手指触碰屏幕阶段动作。其他触摸事件的阶段动作也需要采用类似的代码。
触摸事件的空间方面
空间方面就是每个触摸点(cc.Touch)对象包含了当前位置信息,以及之前的位置信息。
下面的函数可以获得触摸点之前的位置信息。
[cc.Point]getPreviousLocationInView()//UI坐标
[cc.Point]getPreviousLocation()           //OpenGL坐标
下面的函数可以获得触摸点当前的位置信息。
[cc.Point]getLocationInView()              //UI坐标
[cc.Point]getLocation()                         //OpenGL坐标
单点触摸事件

上述代码第1行是创建一个单点触摸事件监听器对象。第2行代码是设置是否吞没事件,如果设置为true。那么在onTouchBegan函数返回true时吞没事件。事件不会传递给下一个Node对象。第3行代码是设置监听器的onTouchBegan属性回调函数。第10行代码是设置监听器的onTouchEnded属性回调函数。代码第4行是获取事件所绑定的精灵对象。其中event.getCurrentTarget()语句返回值是Node对象。第5行代码是获取当前触摸点相对于target对象的模型坐标。第6行代码是获得target对象的尺寸。第7行代码是通过target对象的尺寸创建rect变量

第8行代码是判断是否触摸点在target对象范围。第9行代码是放大target对象,代码第12-14行是注册监听器,其中第12行使用精灵显示优先级注册事件监听器,其中参数getChildByTag(kBoxA_Tag)是通过精灵标签tag实现获得精灵对象。
第13行和第14行代码是为了另外两个精灵注册事件监听器,其中listerner.clone()获得listener对象,使用clone()函数是因为每一个事件监听器只能被注册一次,addEventListener会在注册事件监听器时设置一个注册标识。一旦设置了注册标识,该监听器就不能再用于注册其他事件监听。因此需要使用listener.clone()克隆一个新的监听器对象,把这个新的监听器对象用于注册。
多点触摸事件
多点触摸事件是与具体的平台有关系的,多点触摸和单点触摸开发流程基本相似。

第一行’touches’in cc.sys.capabilities判断当前系统和设备是否支持多点触摸。
第2-5行代码是一种快捷的注册事件监听器到管理器的方式。
主要代码如下:
cc.eventManager.addListener({…},this)
使用这种快捷方式,可以不需要创建EventListener对象,直接注册事件监听器。

第3行代码是设置监听器的ouTouchBegan属性回调第6行函数,第4行代码是设置监听器的onTouchMoved属性回调第9行函数。第5行代码是设置监听器的ouTouchEnded属性回调第10行函数。
第7行代码var touch=toucher[i]从touches中取出一个touch
第8行代码var id=touch.getId()获得触摸点的id,相同的id说明是同一个触摸点。


基于Cocos2D-JS与Box2D的“水果忍者”类游戏开发实战教程 每个b2World都必须指定一个重力向量(gravity vector),用以驱动所有动态刚体的加速度变化。该向量由b2Vec2表示,单位一般为米/秒²(m/s²),典型值为(0, -9.8),对应现实世界中的标准重力加速度。然而在游戏中,我们并不一定追求完全真实的物理表现。相反,常常需要调整重力大小甚至方向,以契合特定玩法需求。 阅读详情

相关推荐

cocos2d-x 触摸事件 讲解

cocos2d-x 触摸事件讲解 手机游戏 开发

cocos2d-x学习笔记(12)屏幕触摸事件(单点触摸)

常用的触摸事件一般有4个: onTouchBegan:触摸事件开始,也就是手指按下时; onTouchMoved:触摸移动事件,也就是手指在屏幕滑动的过程; onTouchEnded:触摸事件结束,也就是手指松开时。 onTouchCancelled:打断触摸事件事件,一般是系统层级的消息,如手机来电话,触摸事件就会被中断。 auto listener = EventListenerTo

冰镇油条 2828

手把手教你用ObjectCRX进行Caxa二次开发:从零开始的环境搭建教程

本文是一份面向零基础初学者的Caxa二次开发实战指南,重点讲解如何使用ObjectCRX框架从零开始搭建开发环境。内容涵盖Visual Studio 2015版本锁定、ObjectCRX向导集成、项目创建、典型错误解决,并最终实现一个可在Caxa中运行的HelloWorld程序,帮助开发者快速入门并避开常见陷阱。

w3x4y的博客 508

Cocos2d-x实例:单点触摸事件

为了让大家掌握Cocos2d-x中的事件机制,下面我们以触摸事件为例,使用事件触发器实现单点触摸事件。该实例如图8-3所示,场景中有三个方块精灵,显示顺序如图8-3所示,拖拽它们可以移动它们,事件响应优先级是按照它们的显示顺序。下面我们再看看具体的程序代码,首先看一下HelloWorldScene.h文件,它的代码如下: #ifndef __HELLOWORLD_SCENE_H__ #define

「智捷课堂」关东升的博客 1万+

802.1AS-2011_Gptp协议栈

GPTP(广义时钟同步协议,或IEEE 802.1AS)的基本功能是确保局域网中所有的时钟都同步,并提供时间信息。这种协议用于在局域网中进行同步和时间对齐,其目的是确保网络中各设备的时间一致性。

weixin_49041703的博客 2540

LSTM cell结构的理解和计算

LSTM是传统RNN网络的扩展,其核心结构是其cell单元,网上LSTM的相关资料繁多,质量参差不齐,下面主要结合LSTM神经网络的详细推导和 Christopher Olah的blog两篇文章中的内容进行说明。主要介绍网络如何计算,为何这么算先不展开:)。前者一副图加上29个公式,简洁明了;后者娓娓道来,适合初学者。首先是LSTM cell最常见的结构图: 这是变形的版本(找不到更清晰的版本了),

songhk0209的博客 2万+

cocos2d-x 3.x学习之TouchOneByOne单点触摸

#include #include "cocos2d.h" USING_NS_CC; class TouchOneByOneTest:public Layer{ public: static Scene* createScene(); virtual bool init(); void menuCloseCallback(Ref* pSender); CREATE

wandersm的专栏 1392

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8175

cocos2d-js之单点触摸

屏幕触摸事件有两个监听器cc.EventListener.TOUCH_ONE_BY_ONE和cc.EventListener.TOUCH_ALL_AT_ONCE,分别对应着单点触摸和多点触摸。 与触摸事件相关联的触摸响应属性有: onTouchBegan:当手指触摸屏幕是回调该属性所指的函数,如果函数返回值为true,才会回调后面两个属性(onTouchMoved和onTouchEnded)所指

TomatoAndBeef的博客 1614

无人机测绘航线生成算法

JavaScript开发和测试无人机测绘航线的自动生成方法,设计可行,算法可靠

ly1302116的专栏 5234

ABAP BOM展开避坑指南:CS_BOM_EXPL_MAT_V2函数参数配置详解

本文深入解析了SAP ABAP开发中用于物料清单展开的核心函数CS_BOM_EXPL_MAT_V2。针对其复杂的参数配置,如CAPID、STLAN、DATUV和MEHRS,提供了详细的避坑指南和最佳实践,帮助开发者避免数据错误与性能陷阱,实现高效、准确的BOM多层展开。

pea55的博客 850

cocos2d-x3.2触屏问题,不会调用onTouchBegan

3.2版本改了触摸机制,加如下代码即可 auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(PlayGameLayer::onTouchBegan, this); listener

KimiFly.com 2993

告别乱码!ESP32+LVGL显示中文的保姆级教程(基于ESP-IDF,附7000字库生成)

本文详细介绍了如何在ESP32上使用LVGL显示中文的完整解决方案,包括中文字库生成、ESP-IDF工程集成和优化技巧。通过7000字库生成和实战案例,帮助开发者彻底解决中文乱码问题,适用于智能家居、智能手表等嵌入式设备开发。

weixin_28740299的博客 396

【cocos2d-js教程】cocos2d-js 遮挡层(禁止触摸事件传递层)

在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解cocos2d-js的触摸传递机制,本文主要针对cocos2d-js v3.0 final版本。 根据官方文档,我们可以得知,触摸方式有五种,但是根据需求,我们需要做的是拦截触摸监听。 所以我们简单封装了这么一个类,如下所示: cc.ModelL...

weixin_34295316的博客 141

LPDDR5 物理层一致性测试(连载・下):电平、过冲下冲与 Rx 接收眼图 Mask 掩模完整指标解读

本文系统梳理LPDDR5物理层一致性测试全流程,涵盖差分/单端电平、边沿斜率、交叉点电压、过冲下冲及CS/CA/DQ接收眼图掩模(Rx Mask)测试,详解各参数定义与工程实操要点。强调配置需与DRAM MR寄存器同步,突出差分≠合格、面积积分不可忽视、掩模失败优先排查参考电压与信号完整性等高频坑点,为硬件调试与SI工程师提供权威参考。

一只豌豆象的博客 38

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

cocos2d-js | 触摸事件

现在Layer层的onEnter方法里create一个listener,指明事件为单点触摸,然后声明三个触摸事件 ​ ​ onEnter : function () { this._super(); var listener = cc.EventListener.create({ event : cc.EventListene...

u011607490的博客 892

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

cocos2d-x触摸事件处理的javascript开发出现getTouchDispatcher is not a function

转载出处: cocos2d-x的javascript开发出现 TypeError: ... getTouchDispatcher is not a function   使用国内开源跨平台游戏引擎cocos2d-x 2.1.4做游戏开发的时候,需要作一个方向盘,触摸某个方向,player就往哪个方向移动,自己采用sprite加载一张图片做为这个方向盘,在做sprite的触摸事件的时候报错:

guolong99的专栏 1318

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

cocos2d-js 遮挡层(禁止触摸事件传递层)

在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解cocos2d-js的触摸传递机制,本文主要针对cocos2d-js v3.0 final版本。 根据官方文档,我们可以得知,触摸方式有五种,但是根据需求,我们需要做的是拦截触摸监听。 所以我们简单封装了这么一个类,如下所示: cc.ModelLayer...

weixin_34341229的博客 504

cocos2d-js类和精灵触摸事件

类:精灵类的调用传参都是cotr构造函数接收的,层级的颜色在 this._super()中添加 生命周期函数开始也需要this._super() 层级类: cc.Layer.extend({ }) cc.LayerColor.extend({ ctor:function() { this._super(cc.color(255,255,255,255))

yiyezhichen的博客 1461

cocos2d-html5 点击事件,Cocos2d-JS 触摸事件

触摸事件的时间方面触摸事件有两个事件监听器:cc.EventListener.TOUCH_ONE_BY_ONE和cc.EventListener.TOUCH_ALL_AT_ONCE,分别对应单点触摸和多点触摸。这些监听器有一些触摸事件响应属性,这些属性对应着触摸事件不同阶段。通过设置这些属性能够实现事件与事件处理者函数的关联。单点触摸事件的响应属性如下:(1)onTouchBegan。当一个手指触...

weixin_29091105的博客 368

cocos2d - JS 单点触摸事件和鼠标事件

单点触摸事件 Demo :// 创建一个事件监听器 OneByOne 为单点触摸 var listener1 = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches: true, // 设置是否吞没事件,在 onTouchBeg

长路漫漫的博客 3553

cocos2d - JS 实现翻页效果

cocos2d - JS 实现翻页效果 :显示效果 :说明 :Demo实现了常见的翻页效果 , 还有点击选关模式的放大效果 . 翻页效果主层 JavaScript 代码 :var SelectPageLayer = cc.Layer.extend({ deltaCount : null, curSelectPage : null, curSelectMode : null,

Yu 3304

cocos2d-js | 新建项目和开发环境的选择

(如果第一次接触cocos请到官网下载cocos2d-x压缩包,注意下面还有 cocos2d - html 版本,1M左右,暂时不考虑,因为网上的资料大多是2d-x版本) 点击进入cocos2dx官方网站 (接触过cocos2d-cpp的dalao肯定不会陌生,新建项目使用命令行的时候会选择语言 - language) (如果你已经配置好了cocos2d-x的开发环境,就可以开始啦!) 我...

u011607490的博客 1183

cocos2d - JS 点击事件

点击事件标准代码 :initListen: function(){ var that = this var listener = cc.EventListener.create({ event: cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches: true, onTouchBegan:

Yu 1401

Cocos2d-x中jsb结构剖析

libs/javascript下有两部分bindings和spidermonkey。其中spidermonkey为js虚拟机,暂时不去管它。bindings下分为四部分,分别为主干部分,generated,js,obfuscate。下面分别介绍。1.主干部分,按照文件顺序一次介绍。 cocos2d_specifics.h声明一些回调和代理。包括触摸事件,schedule事件,CCBAnima...

weixin_34124651的博客 110

在cocos2d-js实现自动绑定cocostudioUI控件与事件(三)

为cc.Node类型节点注册触摸事件演示常规方式为cc.Node类型注册触摸事件ctor: function() { ... this._label = new ... cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ONE_BY_ONE, swa

奎特尔星球 2390
上一篇: Cocos2d-JS 事件处理机制
下一篇: Cocos2d-JS 键盘、鼠标事件
AiCoding_D
博客等级 码龄11年 4粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值