cocos2d-x 3.x 触摸事件

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*touch, cocos2d::Event*event);

HelloWorldScene.cpp

   EventListenerTouchOneByOne*listener=EventListenerTouchOneByOne::create();
    listener->onTouchBegan=CC_CALLBACK_2(HelloWorld::touchBegan,this);//触摸开始,必须添加,不使用也要添加,否则运行不通过
    listener->onTouchMoved=CC_CALLBACK_2(HelloWorld::touchMoved,this);//触摸移动
    listener->onTouchEnded=CC_CALLBACK_2(HelloWorld::touchEnded,this);//触摸中断,一般是系统层级的消息,如来电话,触摸事件就会被打断
    listener->onTouchCancelled=CC_CALLBACK_2(HelloWorld::touchCancelled,this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);

bool HelloWorld::touchBegan(Touch*touch, Event*event){
    Vec2 pos=touch->getLocation();
    log("touchBegan x:%f,y:%f",pos.x,pos.y);
    return true;//返回false时,触摸移动、触摸结束不会触发
}

void HelloWorld::touchMoved(Touch*touch, Event*event){
    Vec2 pos=touch->getLocation();
    log("touchMoved x:%f,y:%f",pos.x,pos.y);
}

void HelloWorld::touchEnded(Touch*touch, Event*event){
    Vec2 pos=touch->getLocation();
    log("touchEnded x:%f,y:%f",pos.x,pos.y);
}

void HelloWorld::touchCancelled(Touch*touch, Event*event){
    Vec2 pos=touch->getLocation();
    log("touchCancelled x:%f,y:%f",pos.x,pos.y);
}
时间: 2024-08-27 17:20:42

cocos2d-x 3.x 触摸事件的相关文章

cocos2d-x:解决点击拖动按钮后,所在的layer监听不到触摸事件的问题

点击拖动按钮后,想让所在的layer监听到屏幕的触摸事件,可以把该按钮拖动开始的时候设置setTouchEnabled为false;例: #include "ui/UIButton.h" bool myDemo::init() { // 设置点击事件 EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(

Lua中添加触摸事件

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

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

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

registerWithTouchDispatcher 注册单点触摸事件

Doc: If isTouchEnabled, this method is called onEnter. Override it to change the way CCLayer receives touch events. Default: CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this,0); Example: void CCLayer::registerWithTouchDispatcher() { CC

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

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

cocos2dx 3.x 触摸事件

单点触摸: 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

屏幕触摸事件监听,判断上下左右的操作行为,判断方法缩小的操作行为

在手机屏幕上能够实现的人机交互行为,大致包括点击按钮,拉动滑动块,物体缩放,上下左右拉动等. 手机屏幕触摸事件的监听方法: 1.首先要设置一块布局区域,frameLayout/LinearLayout等都可以,并为布局设置id: 2.在Activity中声明相应的布局类型,并通过findViewById()方法找到该布局,然后为该布局区域设置setOnTouchListener()方法,就能监听在相应屏幕触摸操作 实现屏幕触摸事件监听的代码: private LinearLayout Land;

5.触摸事件、侧滑菜单

触摸事件 侧滑菜单--- github-SlidingMenu 1.在ViewGroup中,让自己内容移动有以下三个方法个方法: layout(l,t,r,b); offsetTopAndBottom(offset)和offsetLeftAndRight(offset); scrollTo和scrollBy方法; 注意:滚动的并不是viewgroup内容本身,而是它的矩形边框 它是瞬间移动的 2.在自定义ViewGroup中一般不需要去实现onMeasure, 我们去实现系统已有的ViewGro

cocos2d-x 3.x之触摸事件

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