cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd

今天白白跟大家分享一下cocos2dx单点触摸经验。

cocos2dx触摸CCTouch类的单点触摸有四个函数CCTouchBegan,CCTouchMove,CCTouchEnd,CCTouchCancalled。

这些触摸的函数不一定每一个都要响应,可是CCTouchBegan是一定要有的,他的返回值是bool,其他函数返回值为void

以下我们看看怎样触摸:

首先我们新建一个项目Hello

1、在源文件Hello.h声明函数

    void registerWithTouchDispatcher(void);                 //注冊触摸
    bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);    //触摸開始,注意返回类型,假设返回false,就不用写以下三个函数
    void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);    //触摸滑动
    void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);    //触摸结束
    void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);//触摸取消  比如中途来点

2、 开启触摸

在须要开启触摸的地方增加即可,比如init里面

bool Hello::init()
{
    setTouchEnabled(true);
    return true;
}

3、实现注冊函数

void Hello::registerWithTouchDispatcher()
{
    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
}

4、实现ccTouchBegan

bool Hello::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
    CCPoint touchpoint = pTouch->getLocation();		 //获取触摸坐标
    CCLOG("touch began, touchpoint is %f", touchpoint);
    return true;      //true表示继续响应CCTouchMove,CCTouchEnd,CCTouchCancalled,false表示不响应。
}

5、实现ccTouchMove

void Hello::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
    CCPoint touchpoint = pTouch->getLocation();		 //获取触摸坐标
    CCLOG("touch move, touchpoint is %f", touchpoint);
}

6、实现ccTouchEnded

void Hello::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
    CCPoint touchpoint = pTouch->getLocation(); //获取触摸坐标
    CCLOG("touch end, touchpoint is %f", touchpoint);
}

7、实现ccTouchCancalled

void Hello::ccTouchCancalled(CCTouch *pTouch, CCEvent *pEvent)
{
    CCPoint touchpoint = pTouch->getLocation();		 //获取触摸坐标
    CCLOG("touch end, touchpoint is %f", touchpoint);
}

ok,触摸完成,请大家指示!

时间: 2024-10-12 20:00:20

cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd的相关文章

Cocos2d-x触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd

cocos2dx触摸CCTouch类的单点触摸有四个函数CCTouchBegan,CCTouchMove,CCTouchEnd,CCTouchCancalled. 这些触摸的函数不一定每个都要响应,但是CCTouchBegan是一定要有的,它的返回值是bool,其它函数返回值为void 下面我们看看如何触摸: 首先我们新建一个项目Hello. 1.在源文件Hello.h声明函数 1 void registerWithTouchDispatcher(void); //注册触摸 2 bool ccT

cocos2dx触屏事件详解

版本:2.x 平台iso 先看mian.m文件 //创建一个iso应用 int retVal = UIApplicationMain(argc, argv, nil, @"AppController"); iOS系统会调用AppController 的 didFinishLaunchingWithOptions函数,里面做了一些创建界面的东西 该函数内部有如下代码: cocos2d::CCApplication::sharedApplication()->run(); 注:*.m

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

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

jQuery flickity 滑动触屏

flickity是一款自适应手机触屏滑动插件,它的API参数很丰富,包括对齐方式.循环滚动.自动播放.是否支持拖动.是否开启分页.是否自适应窗口等. 在线实例 实例演示 使用方法 <div class="hero-gallery js-flickity"> <div class="hero-gallery__cell hero-gallery__cell--1"> <div class="content-wrap"&

cocos2d-x学习记录3——CCTouch触摸响应

游戏不同于影音,强交互性是其一大特色,在游戏中主要体现为接受用户的输入并响应.智能手机触摸是其重要的输入方式. 在cocos2d-x中,触摸分为单点触摸和多点触摸. 单点触摸:主要继承CCTargetedTouchDelegate 实现. 多点触摸:主要继承CCStandardTouchDelegate实现. MyScene.h 1 #ifndef MyScene_H_H 2 #define MyScene_H_H 3 4 #include "cocos2d.h" 5 using na

【Cocos2dx 3.3 Lua】触屏事件

cocos2dx 3.x触屏时间分为单点触摸和多点触摸: 单点触摸:(即只有注册的Layer才能接收触摸事件) 多点触摸点单用法(多个Layer获取屏幕事件): 1.单点触摸 1.1 基本函数 onTouchBegan    如果返回true:本层的后续Touch事件可以被触发,并阻挡向后层传递 如果返回false,本层的后续Touch事件不能被触发,并向后传递,也就是不会调用 onTouchMoved 简单点来说,如果: 1.Layer 只有一层的情况: 1 virtual bool onTo

Cocos2d-x 3.0 中使用单点触摸

Cocos2d-x 3.0 中使用单点触摸 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2712 在游戏中,经常会用到触摸,大部分游戏也是通过触摸控制游戏角色运动的,在Cocos2d-x 3.0中使用了新的触摸机制,Cocos2d-x 3.0中摒弃了Cocos2d-x 2.0中将要触发的事件交给代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应,在Cocos2d-x 3.0中只需通过创建一个

【COCOS2D-X 备注篇】cocos2dx 获取手机截屏等意外取消触屏事件的处理方法!

最近有童鞋问我如何获取到iphone手机截屏的事件,所以本篇就简单的聊下这种问题的处理办法. 在cocos2dx引擎中,我们能在AppDelegate中获取到,用户将应用切入后台,以及重新返回应用的事件函数.那么对应的,cocos2dx也在引擎中给予我们截取屏幕等这种只能手机应有事件的处理函数. 其实大家应该都很熟悉截取用户触屏的函数,如下: 1 2 3 4 // default implements are used to call script callback if exist virtu

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

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