cocos2dx为Sprite添加触摸事件监听器

1.首先头文件定义事件处理的函数原型

private:
	bool onTouchBegan(Touch* tTouch,Event* eEvent);//手指按下事件
	void onTouchMoved(Touch* tTouch,Event* eEvent);//手指移动事件
	void onTouchEnded(Touch* tTouch,Event* eEvent);//手指离开事件

2.实现原型

bool ShopItem::onTouchBegan(Touch* tTouch,Event* eEvent){
 if (sprite->getBoundingBox().containsPoint(tTouch->getLocation())){//判断触摸点是否在目标的范围内

    /**这里为事件内容**/
    return true;
 }else
    return false;
 }
}

void ShopItem::onTouchMoved(Touch* tTouch,Event* eEvent){
	/**这里为事件内容**/
}

void ShopItem::onTouchEnded(Touch* tTouch,Event* eEvent){
	/**这里为事件内容**/
}

3.绑定事件

auto listener = EventListenerTouchOneByOne::create();
	listener->onTouchBegan = CC_CALLBACK_2(ShopItem::onTouchBegan, this);
	listener->onTouchMoved = CC_CALLBACK_2(ShopItem::onTouchMoved, this);
	listener->onTouchEnded = CC_CALLBACK_2(ShopItem::onTouchEnded, this);
	this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, sprite);

  

时间: 2024-08-03 14:58:43

cocos2dx为Sprite添加触摸事件监听器的相关文章

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)反复贴图上,这样可以减少内存

cocos2dx 2.2 之触摸事件

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

给Layer添加触摸事件

给Layer添加触摸事件可以在init方法中添加以下代码: auto touchlistener = EventListenerTouchOneByOne::create(); touchlistener->setSwallowTouches(true);//设置是否想下传递触摸 touchlistener->onTouchBegan = CC_CALLBACK_2(DirectionController::onTouchBegan, this); touchlistener->onTo

Lua中添加触摸事件

1首先,lua中的触摸事件与cocos2d中的触摸事件相似,都需要添加监听者,都需要将监听者添加到触摸事件分发器中去 local listener=cc.EventListenerTouchOneByOne:create() listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN ) listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_T

Android基础——物理按键,长按,触摸事件及其监听器

布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.an

单击事件与触摸事件的区别

针对屏幕上的一个View组件,Android是如何区分应当触发onTouch事件还是onClick事件?在Android中,一次用户操作可以被不同的View组件按次序分别处理,并将完全响应了用户的一次UI操作称之为消耗了该事件(consume),那么Android是按什么次序将事件传递的,又在什么情况下判定为消耗了该事件?下面通过一段具体的代码进行说明. 在这段代码中,先为按钮添加单击事件监听器,并通过Log.i()方法输出onClick(单击事件).然后为按钮添加触摸事件,通过判断方式输出当前

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

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

Cocos2d-x中触摸事件

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