cocos2d-x基础学习--添加触摸事件
2014-12-17 22:21
295 查看
使用cocos2d来开发手机游戏,为我们的游戏添加触摸事件是游戏交互必须的,使用cocos2d-x,添加触摸事件也十分简单。、触摸事件分为单点触摸和多点触摸。
1,添加单点触摸事件,表示单点触摸事件的类为EventListenerTouchOneByOne。首先调用create方法创建出一个指针对象,然后用闭包函数的形式向该对象传递有关触摸的函数。有关触摸的函数主要有四个:
1)onTouchBegan:触摸按下时被响应,当返回false时之后的触摸事件不会被响应。
2)onTouchMoved:触摸移动时被响应。
3)onTouchEnded:触摸抬起时被响应。
4)onTouchCancelled:触摸事件取消时被响应。
我们可以在触摸事件中获取触摸点,在判断我们的精灵类或控件是否包含该触摸点,从而做出响应。 auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchBegan");
}
return true;
};
listener->onTouchMoved = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchMoved");
}
};
listener->onTouchEnded = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchEnded");
}
};
listener->onTouchCancelled = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchCancelled");
}
}; 接下来我们将触摸事件添加进来
2,添加多点触摸事件,方法与添加单点触摸事件类似,多点触摸的类是EventListenerTouchAllAtOnce。当我们添加了多点触摸事件时,单点触摸事件将不再被响应。 auto listeners = EventListenerTouchAllAtOnce::create();
listeners->onTouchesBegan = [](std::vector<Touch *> ts, Event *e){
log("onTouchesBegan");
};
listeners->onTouchesMoved = [](std::vector<Touch *> ts, Event *e){
log("onTouchesMoved");
};
listeners->onTouchesEnded = [](std::vector<Touch *> ts, Event *e){
log("onTouchesEnded");
};
listeners->onTouchesCancelled = [](std::vector<Touch *> ts, Event *e){
log("onTouchesCancelled");
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listeners, this); 我们可以在vector中得到所有的触摸点,并作出相应处理。
1,添加单点触摸事件,表示单点触摸事件的类为EventListenerTouchOneByOne。首先调用create方法创建出一个指针对象,然后用闭包函数的形式向该对象传递有关触摸的函数。有关触摸的函数主要有四个:
1)onTouchBegan:触摸按下时被响应,当返回false时之后的触摸事件不会被响应。
2)onTouchMoved:触摸移动时被响应。
3)onTouchEnded:触摸抬起时被响应。
4)onTouchCancelled:触摸事件取消时被响应。
我们可以在触摸事件中获取触摸点,在判断我们的精灵类或控件是否包含该触摸点,从而做出响应。 auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchBegan");
}
return true;
};
listener->onTouchMoved = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchMoved");
}
};
listener->onTouchEnded = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchEnded");
}
};
listener->onTouchCancelled = [a](Touch *t, Event *e){
if (a->getTextureRect().containsPoint(t->getLocation()))
{
log("onTouchCancelled");
}
}; 接下来我们将触摸事件添加进来
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);第二个参数表示该触摸事件被添加到哪个对象中,在此我直接将该触摸事件添加到我们布景层Layer类中。
2,添加多点触摸事件,方法与添加单点触摸事件类似,多点触摸的类是EventListenerTouchAllAtOnce。当我们添加了多点触摸事件时,单点触摸事件将不再被响应。 auto listeners = EventListenerTouchAllAtOnce::create();
listeners->onTouchesBegan = [](std::vector<Touch *> ts, Event *e){
log("onTouchesBegan");
};
listeners->onTouchesMoved = [](std::vector<Touch *> ts, Event *e){
log("onTouchesMoved");
};
listeners->onTouchesEnded = [](std::vector<Touch *> ts, Event *e){
log("onTouchesEnded");
};
listeners->onTouchesCancelled = [](std::vector<Touch *> ts, Event *e){
log("onTouchesCancelled");
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listeners, this); 我们可以在vector中得到所有的触摸点,并作出相应处理。
相关文章推荐
- cocos2d-html5学习之三-为sprite添加触摸事件
- cocos2d-html5学习之三-为sprite添加触摸事件
- cocos2d-html5学习之三-为sprite添加触摸事件
- 在cocos2d上添加UIView,触摸事件往下传递
- ios学习之基础 触摸事件5
- cocos2d JS touch(触摸监听)-快速添加事件监听器到管理器
- 「cocos2d-x」瓦片地图学习之地图滚动及触摸事件处理
- 学习笔记--cocos2dx-3.0中LabelTTF添加触摸监听事件
- iOS开发中使用cocos2d添加触摸事件的方法
- 【cocos2d-x 3D游戏开发】1: 2D基础回顾---触摸事件(2.x)
- Cocos2d-x学习之---自定义图标(带触摸事件)
- cocos2d-android学习六 --- 添加触屏事件
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第二步---编辑器(1)--触摸添加点
- cocos2d-x 2.X demo学习笔记 6 ----ClickAndMoveTest 触摸事件和移动
- cocos2d-x学习笔记(13)触摸事件(多点触摸)
- java基础学习——Java添加事件监听的四种方法代码实例
- cocos2d-x之为label添加事件监听器,单点触摸
- Cocos2d-x2.2 lua下面添加Widget时,触摸事件无法触发
- Cocos2d-x学习之---自定义图标(带触摸事件)
- Cocos2d-x学习笔记(五)CCLayer分析及输入事件处理(触摸、重力传感器、按键)