cocos2dx之触摸事件】的更多相关文章

cocos2d-x lua 触摸事件 version: cocos2d-x 3.6 1.监听 function GameLayer:onEnter() local eventDispatcher = self:getEventDispatcher() local function onTouchBegan(touch, event) local locationInNode = self:convertToNodeSpace(touch:getLocation()) local s = self…
理解一个触摸事件可以从时间和空间两方面考虑. 1.触摸事件的时间方面 触摸事件的在时间方面,如下图所示,可以有不同的“按下”.“移动”和“抬起”等阶段,表示触摸是否刚刚开始.是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起.此外,触摸事件的不同阶段都可以有单点触摸或多点触摸,是否支持多点触摸还要看设备和平台. 触摸事件有两个事件监听器:EventListenerTouchOneByOne和EventListenerTouchAllAtOnce ,分别对应单点触摸和多点触摸.这些…
触摸事件分发中几个代码解读: 怎么说呢,感觉cocos2dx中的消息分发机制,相对于android中触摸事件分发机制要简单的多.因为android中要做区域判断,过滤器,以及父子组件分发给谁等等的逻辑..cocos2dx 中相对就要简单多了. 如果有一个组件如果想要接收触摸事件,会通过一个继承一个CCTouchDelegate接口注册给CCTouchDispatcherCCTouchDispatcher 中维护了一个CCTouchHandler的队列.CCTouchHandler 是CCTouc…
要使精灵能够接收到触摸事件,无非要做三件事. 注册触摸事件; 接收触摸事件; 处理触摸事件. 下面就从这三点出发,来了解一下精灵如何响应触摸事件. 1.注册触摸事件 精灵类Poker继承Sprite和CCTargetedTouchDelegate,并重写CCTargetedTouchDelegate的三个函数ccTouchBegan,ccTouchMoved,ccTouchEnded 同时加入辅助函数rect()和containTouchPoint(CCTouch* touch)用于后面的判断.…
一.触摸事件 为了处理屏幕触摸事件,Cocos2d-x 提供了非常方便.灵活的支持.在深入研究 Cocos2d-x 的触摸事件分发机制之前,我们利用 CCLayer 已经封装好的触摸接口来实现对简单的触摸事件的响应. (1).使用 CCLayer 响应触摸事件 为了处理屏幕输入事件,最简单的解决方案是利用 CCLayer 开启内建的触摸输入支持.在介绍 CCLayer 的时候提到过,它的一个十分重要的作用就是接收输入事件,因此层封装了触摸输入的处理接口.一般情况下,我们可以通过 TouchEna…
下面我们通过一个实例详细了解一下,层中单点触摸事件的实现过程.感受一下它的缺点和优点.该实例场景如下图所示,场景中有两个方块精灵,我们可以点击和移动它们.   下面我们看看HelloWorldScene.cpp具体的实现代码如下: bool HelloWorld::init() { if( !Layer::init() ) { returnfalse; } ...... setTouchEnabled(true); //设置为单点触摸 setTouchMode(Touch::DispatchMo…
addChild(boxC,30, kBoxC_Tag);                                                                                         ⑥ returntrue; } 我们在HelloWorld::init()函数中初始化了场景中的背景和三个方块精灵.代码第①~④行是创建并添加背景,图8-3所示的背景是由一个128x128纹理图片(BackgroundTile.png)反复贴图上,这样可以减少内存…
如何让自定义Layer触发触摸事件? bool LayerXXX::init() { this->setTouchEnabled(true); CCTouchDispatcher* td = CCDirector::sharedDirector()->getTouchDispatcher(); td->addTargetedDelegate(, true); //kCCMenuHandlerPriority - 10 // ... } CCTouchDispatcher是管理cocos2…
在游戏中要实现消息弹窗,让用户点击确认,其他区域产生遮罩,阻挡下层的事件被点击到,这是个很常用的功能,在cocos2d-x中,可以通过为layer添加事件代理来实现: pDirector->getTouchDispatcher()->addTargetedDelegate(this, priority, swallowsTouches); 三个参数分别是要添加触摸事件的node, 事件优先级(默认的-128, 是最小的数字, 具有最高优先级),是否吞噬触摸事件(true为停止事件传递) 这里简…
今天, 我们来学习cocos2dX里面的触摸事件与触摸事件合集, 如今的手机游戏交互基本上都是通过触摸交互的, 所以大家明确这节的重要性了吧, 本节篇幅比較大, 所以我就不扯闲话了 先来看看经常使用函数: 触摸事件: addTargeteDelegate( 谁使用, 优先级, 是否拦截触摸消息); //注冊单点触摸 virtual bool ccTouchBegan(CCTouch * touch,CCEvent * event); //触摸開始 virtual void ccTouchMove…
为了让大家掌握Cocos2d-x中的事件机制,以下我们以触摸事件为例.使用事件触发器实现单点触摸事件.该实比如图8-3所看到的,场景中有三个方块精灵,显示顺序如图8-3所看到的,拖拽它们能够移动它们.事件响应优先级是依照它们的显示顺序. 以下我们再看看详细的程序代码,首先看一下HelloWorldScene.h文件,它的代码例如以下: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h…
cocos2d-x 101次相遇 / 文件夹  1   安装和环境搭建 -xcode  2   Scenes , Director, Layers, Sprites 3   建立图片菜单  4   在HelloWorld上--建立新场景  5   添加一个精灵sprite  5.1   缩小sprite并使之完整显示 6   action ,移动sprite  7   3.0 的点击事件,CCTouchDelegate已经停用了 8   使用触摸事件移动 精灵 void CMyFirstScen…
cocos2d-x 3.0 出来已经好久了,也已经用3.0写了几个小游戏,感觉3.0的事件触发机制太赞了,随这里总结一下.也算是对知识的一种回顾和加深理解. 3.0的事件分发机制中.须要也只须要通过创建一个事件监听器来实现各种触发后的逻辑,然后加入到事件分发器_eventDispatcher.全部的事件监听器由这个分发器统一管理,就可以完毕事件响应. 事件监听器有下面几种: 1.EventListenerTouch(触摸事件) 2.EventListenerKeyboard(键盘响应事件) 3.…
 CCTouchDispatcher是管理cocos2d-x中全部Touch事件派发的类, CCTouchDispatcher中包括了两个CCTouchHandler的列表, 分别存储StandardTouchHandler和 TargetedTouchHandler. 属性: this->mTouchPriporty Layer 优先级越小越高越先响应事件 实验一:当两个Layer优先级同等的时候会怎么样呢? 实验发现.同等优先级下,后加入的Layer先响应事件. ------------…
1.只有CCLayer及其派生类才有触摸功能. 2.开启触摸 setTouchEnable(true); 3.设置触摸模式,单点,多点(仅IOS支持) setTouchMode(kCCTouchesOneByOne);//单点触摸 4.需要重载(override)的四个触摸事件函数 bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);//点触事件,返回false,表示触摸事件不往下传递了 void ccTouchMoved(CCTouch *p…
CCLayer继承自CCNode,在CCLayer中可以实现单点触摸.多点触摸和重力感应回调3种不同形式的交互.这部分的难点在于,当存在多个层都要去接收触摸时它的响应机制是如何处理的.了解内部的处理机制使用起来才会得心应手,说简单也难,说难也简单,让我们一点点剖析. 从触摸方式上看,触摸分两种类型:单点触摸 和多点触摸. 从触摸事件的响应机制上看,触摸事件又分为:标准触摸事件 和目标触摸事件. 引擎当中处理用户操作的机制是一种由事件驱动的处理机制.所谓的事件驱动,就是指只有当事件发生了,才会执行…
玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自己主动消失,这就这节要说的碰撞检測. 以下详细看代码的实现: 做ios开发有触摸事件cocos2d相同也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { privat…
HelloWorldScene.h bool touchBegan(cocos2d::Touch*touch, cocos2d::Event*event);//触摸开始,返回bool类型 void touchMoved(cocos2d::Touch*touch, cocos2d::Event*event); void touchEnded(cocos2d::Touch*touch, cocos2d::Event*event); void touchCancelled(cocos2d::Touch…
单点触摸: bool onTouchBegan(cocos2d::Touch *pTouch, cocos2d::Event *pEvent); void onTouchMoved(cocos2d::Touch *pTouch, cocos2d::Event *pEvent); void onTouchEnded(cocos2d::Touch *pTouch, cocos2d::Event *pEvent); 多点触摸: void onTouchesBegan(const std::vector…
首先要创建一个layer,设置该层为可触摸 layer:setTouchEnabled(true) 注册触摸事件 local listener = cc.EventListenerTouchOneByOne:create() listener:setSwallowTouches(true) listener:registerScriptHandler(function(touch, event) --做触摸处理... return true--返回true时,该层下面的层的触摸事件都会屏蔽掉 e…
1. EventTouch 触摸事件的成员变量:枚举EventCode.存储Touch的容器. 不同的EventCode代表不同时机的触摸事件,能让监听器调用不同的回调函数. enum class EventCode { BEGAN, MOVED, ENDED, CANCELLED }; static const int MAX_TOUCHES = 15; EventCode _eventCode; std::vector<Touch*> _touches; 这里涉及到了Touch类: Tou…
在cocos2d-x 3.0中一共有五个事件监听器: 触摸事件(EventListenerTouch) 键盘响应事件 (EventListenerKeyboard) 加速器记录事件(EventListenerAcceleration) 鼠标响应事件(EventListenerMouse) 自定义事件(EventListenerCustom) 顾名思义,就是分别监听touch,key.加速器.mouse和自定义的事情. 对于加速器记录事件,现在基本上没有接触到这方面,就先略过吧... 触摸事件:…
关于js-binding中Layer触摸事件的优化 cocos2d-x 3.7 1. 目前js中监听触摸事件带来的不便(特别是cocosbuilder) 在目前的js-binding中,如果要监听layer的触摸事件,需要自己监听touch事件,如: var touchLayer = cc.Layer.creat(); cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ONE_BY_ONE, onTouchBegan: fun…
原文地址 http://cn.cocos2d-x.org/article/index?type=quick_doc&url=/doc/cocos-docs-master/manual/framework/quick/V3/touch-events/zh.md Quick 中的触摸事件 Cocos2d-x 原本的触摸机制存在一些限制,在使用中需要开发者做不少额外的处理.所以 Quick-Cocos2d-x 提出了自己的一套触摸机制.本文详细介绍了这套新机制的用法. 显示层级 在 Cocos2d-x…
昨天刚刚參加玩游戏设计大赛, 积累了一些东西. 接下去将会逐个分享出来. 首先是显示触摸操作. 由于要演示我们的作品.使用试玩过程中, 假设没办法显示我们的触摸操作(像录制视频一样, 点击了屏幕某点, 出现红点或者水波荡漾这种效果), 那样的话演示效果不好. 观众就无法直观的了解我们的游戏.所以考虑加入这个功能. 之后, 走了点弯路.一直在考虑手机本身有没有这个功能,后来找了非常久.非越狱iPhone是没有这个功能的. 于是乎, 自己写呗. 详细效果例如以下: 实现非常easy.主要用到了一个粒…
http://blog.csdn.net/hitwhylz/article/details/26042751 首先是显示触摸操作. 在文章最后.对性能进行一些提升改造. 由于要演示我们的作品.使用试玩过程中, 假设没办法显示我们的触摸操作(像录制视频一样, 点击了屏幕某点, 出现红点或者水波荡漾这种效果), 那样的话演示效果不好.观众就无法直观的了解我们的游戏. 所以考虑增加这个功能. 之后, 走了点弯路.一直在考虑手机本身有没有这个功能.后来找了非常久. 非越狱iPhone是没有这个功能的.…
触摸事件 因为 UIView 是 UIResponder 的子类,所以覆盖以下四个方法就可以处理四种不同的触摸事件: 1.  一根手指或多根手指触摸屏幕 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event; 2.  一根手指或多根手指在屏幕上移动(随着手指的移动,相关的对象会持续发送该消息) - (void)touchesMoved:(NSSet<UITouch *>…
-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事件:通过触摸.手势进行触发(例如手指点击.缩放) 运动事件:通过加速器进行触发(例如手机晃动) 远程控制事件:通过其他远程设备触发(例如耳机控制…
近段时间使用html5开发一个公司内部应用,而触摸事件必然是移动应用中所必须的,刚开始以为移动设备上或许也会支持鼠标事件,原来是不支持的,好在webkit内核的移动浏览器支持touch事件,并且打包成app也毫无压力.原本以为touch事件应该跟鼠标事件是一样的道理,实践过程中虽然不难,但还是碰到了不少坑,才发现还是略有区别的. $(document).bind(touchEvents.touchstart, function (event) { event.preventDefault();…
概述 本文主要解析从我们的手指触摸苹果设备到最终响应事件的整个处理机制.本质上讲,整个过程可以分为两个步骤: 步骤1:找目标.在iOS视图层次结构中找到触摸事件的最终接受者: 步骤2:事件响应.基于iOS响应者链(Responder Chain)处理触摸事件 找目标 在找目标阶段所使用到的两大利器是UIView的 hitTest:withEvent: 以及 pointInside:withEvent: 方法.找目标的过程也称为hit-Testing.先来看一张图(注: 图来自MJ)比较直观: 下…