cocos2dx-触摸事件

 1 //创建一个精灵
 2     Sprite *spriteTest = Sprite::create("1.png");
 3     spriteTest->setPosition(Point(100,100));
 4     this->addChild(spriteTest);
 5    //创建一个单点触摸事件监听
 6     auto listener = EventListenerTouchOneByOne::create();
 7     //向下传递触摸
 8     listener->setSwallowTouches(true);
 9     //触摸回调
10     listener->onTouchBegan = [](Touch *touch,Event *event)
11     {
12         auto target = event->getCurrentTarget();
13         Point locationInNode = target->convertToNodeSpace(touch->getLocation());
14         Size size = target->getContentSize();
15         Rect rect = Rect(0, 0, size.width, size.height);
16         if (rect.containsPoint(locationInNode)) {
17             CCLOG("sprite began... x = %f, y = %f", locationInNode.x, locationInNode.y);
18             target->setOpacity(180);
19             return true;
20         }
21         return false;
22     };
23
24     listener->onTouchMoved = [](Touch *touch,Event *event)
25     {
26         auto target = event->getCurrentTarget();
27         target->setPosition(target->getPosition()+touch->getDelta());
28     };
29
30     listener->onTouchEnded = [](Touch *touch,Event *event)
31     {
32         auto target = event->getCurrentTarget();
33         target->setOpacity(255);
34     };
35
36     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, spriteTest);
时间: 2025-01-09 11:08:37

cocos2dx-触摸事件的相关文章

cocos2d-x 3.x之触摸事件

Layer类的一个重要作用就是接受输入事件,它封装了触摸输入的处理接口.一般情况下,我们可以通过setTouchEnabled方法来开启或关闭接收触摸输入.事实上并不是只有Layer才支持接收触摸事件,任何一个游戏元素都可以接收事件,只不过Layer提供了现成的支持. 我们只需通过创建一个事件监听器用来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher中,所有事件监听器由这个分发器统一管理,即可完成事件响应. 为一个精灵添加触摸事件的四个步骤 1.创建一个精灵 2.创建一

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

addChild(boxC,30, kBoxC_Tag);                                                                                         ⑥ returntrue; } 我们在HelloWorld::init()函数中初始化了场景中的背景和三个方块精灵.代码第①~④行是创建并添加背景,图8-3所示的背景是由一个128x128纹理图片(BackgroundTile.png)反复贴图上,这样可以减少内存

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

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

Cocos2d-x中触摸事件

理解一个触摸事件可以从时间和空间两方面考虑. 1.触摸事件的时间方面 触摸事件的在时间方面,如下图所示,可以有不同的"按下"."移动"和"抬起"等阶段,表示触摸是否刚刚开始.是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起.此外,触摸事件的不同阶段都可以有单点触摸或多点触摸,是否支持多点触摸还要看设备和平台. 触摸事件有两个事件监听器:EventListenerTouchOneByOne和EventListenerTouchAl

cocos2d-x项目101次相遇:使用触摸事件移动 精灵

cocos2d-x 101次相遇 / 文件夹 1   安装和环境搭建 -xcode 2   Scenes , Director, Layers, Sprites3   建立图片菜单 4   在HelloWorld上--建立新场景 5   添加一个精灵sprite 5.1   缩小sprite并使之完整显示6   action ,移动sprite 7   3.0 的点击事件,CCTouchDelegate已经停用了 8   使用触摸事件移动 精灵 void CMyFirstScene::onTou

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

下面我们通过一个实例详细了解一下,层中单点触摸事件的实现过程.感受一下它的缺点和优点.该实例场景如下图所示,场景中有两个方块精灵,我们可以点击和移动它们. 下面我们看看HelloWorldScene.cpp具体的实现代码如下: [html] view plaincopy bool HelloWorld::init() { if( !Layer::init() ) { returnfalse; } ...... setTouchEnabled(true); //设置为单点触摸 setTouchMo

cocos2dx 2.2 之触摸事件

cocos2dx  2.2  之触摸事件 要使精灵能够接收到触摸事件,无非要做三件事. 注册触摸事件; 接收触摸事件; 处理触摸事件. 下面就从这三点出发,来了解一下精灵如何响应触摸事件. 1.注册触摸事件 精灵类Poker继承Sprite和CCTargetedTouchDelegate,并重写CCTargetedTouchDelegate的三个函数ccTouchBegan,ccTouchMoved,ccTouchEnded 同时加入辅助函数rect()和containTouchPoint(CC

cocos2dX 事件之触摸事件和触摸事件集合

今天, 我们来学习cocos2dX里面的触摸事件与触摸事件合集, 现在的手机游戏交互基本上都是通过触摸交互的, 所以大家明白这节的重要性了吧, 本节篇幅比较大, 所以我就不扯闲话了 先来看看常用函数: 触摸事件: addTargeteDelegate( 谁使用, 优先级, 是否拦截触摸消息); //注册单点触摸 virtual bool ccTouchBegan(CCTouch * touch,CCEvent * event); //触摸开始 virtual void ccTouchMoved(

cocos2d-x 事件分发机制 ——触摸事件监听

cocos2d-x 3.0 出来已经好久了,也已经用3.0写了几个小游戏,感觉3.0的事件触发机制太赞了,随这里总结一下,也算是对知识的一种回忆和加深理解. 3.0的事件分发机制中,需要也仅仅需要通过创建一个事件监听器来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher,所有的事件监听器由这个分发器统一管理,即可完成事件响应. 事件监听器有以下几种: 1.EventListenerTouch(触摸事件) 2.EventListenerKeyboard(键盘响应事件) 3.

关于在Cocos2dx中注册触摸事件——Lua

关于在Cocos2dx中注册触摸事件,之前一直对此一知半解,这两天在看引擎的源码,趁此机会写下来... 以下纯属个人理解,如有不对欢迎指正... 在引擎的CCLayer类中声明了有四个方法: 1 virtual bool onTouchBegan(Touch *touch, Event *unused_event); 2 virtual void onTouchMoved(Touch *touch, Event *unused_event); 3 virtual void onTouchEnde