Layer其实继承了触控的接口. 所以只需要重写一些函数即可.
 
在helloword类中重写:
    virtual bool init();
    /** Callback function for touch began.
    *
    * @param touch Touch information.
    * @param unused_event Event information.
    * @return if return false, onTouchMoved, onTouchEnded, onTouchCancelled will never called.
    * @js NA
    */
    virtual bool onTouchBegan(Touch *touch, Event *unused_event);
    /** Callback function for touch moved.
    *
    * @param touch Touch information.
    * @param unused_event Event information.
    * @js NA
    */
    virtual void onTouchMoved(Touch *touch, Event *unused_event);
    /** Callback function for touch ended.
    *
    * @param touch Touch information.
    * @param unused_event Event information.
    * @js NA
    */
    virtual void onTouchEnded(Touch *touch, Event *unused_event);
    /** Callback function for touch cancelled.
    *
    * @param touch Touch information.
    * @param unused_event Event information.
    * @js NA
    */
    virtual void onTouchCancelled(Touch *touch, Event *unused_event);
 
 
此时,只要这个layer在界面上,点击就会在这几个函数中响应. 即可在这里面控制精灵的移动
 
 
 但是编译错误.
2>f:\cocos\p\demo\classes\gamescene.h(17): error C2061: syntax error : identifier 'Touch' (..\Classes\HelloWorldScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(24): error C2061: syntax error : identifier 'Touch' (..\Classes\HelloWorldScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(31): error C2061: syntax error : identifier 'Touch' (..\Classes\HelloWorldScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(38): error C2061: syntax error : identifier 'Touch' (..\Classes\HelloWorldScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(49): error C2143: syntax error : missing ';' before '*' (..\Classes\HelloWorldScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(49): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (..\Classes\HelloWorldScene.cpp)
2>f:\cocos\p\demo\classes\helloworldscene.cpp(105): warning C4996: 'cocos2d::CCString': was declared deprecated
2>          f:\cocos\p\demo\cocos2d\cocos\deprecated\ccdeprecated.h(1108) : see declaration of 'cocos2d::CCString'
2>f:\cocos\p\demo\classes\gamescene.h(17): error C2061: syntax error : identifier 'Touch' (..\Classes\GameScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(24): error C2061: syntax error : identifier 'Touch' (..\Classes\GameScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(31): error C2061: syntax error : identifier 'Touch' (..\Classes\GameScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(38): error C2061: syntax error : identifier 'Touch' (..\Classes\GameScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(49): error C2143: syntax error : missing ';' before '*' (..\Classes\GameScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.h(49): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (..\Classes\GameScene.cpp)
2>f:\cocos\p\demo\classes\gamescene.cpp(42): error C2065: 'zxsprite' : undeclared identifier
2>f:\cocos\p\demo\classes\gamescene.cpp(43): error C2065: 'zxsprite' : undeclared identifier
2>f:\cocos\p\demo\classes\gamescene.cpp(43): error C2227: left of '->setScale' must point to class/struct/union/generic type
2>          type is 'unknown-type'
2>f:\cocos\p\demo\classes\gamescene.cpp(44): error C2065: 'zxsprite' : undeclared identifier
2>f:\cocos\p\demo\classes\gamescene.cpp(44): error C2227: left of '->setPosition' must point to class/struct/union/generic type
2>          type is 'unknown-type'
2>f:\cocos\p\demo\classes\gamescene.cpp(45): error C2065: 'zxsprite' : undeclared identifier
2>f:\cocos\p\demo\classes\gamescene.cpp(49): warning C4996: 'cocos2d::Layer::setTouchMode': was declared deprecated
2>          f:\cocos\p\demo\cocos2d\cocos\2d\cclayer.h(181) : see declaration of 'cocos2d::Layer::setTouchMode'
2>f:\cocos\p\demo\classes\gamescene.cpp(56): error C2511: 'bool GameScene::onTouchBegan(cocos2d::Touch *,cocos2d::Event *)' : overloaded member function not found in 'GameScene'
2>          f:\cocos\p\demo\classes\gamescene.h(4) : see declaration of 'GameScene'
2>f:\cocos\p\demo\classes\gamescene.cpp(57): warning C4996: 'cocos2d::CCPoint': was declared deprecated
2>          f:\cocos\p\demo\cocos2d\cocos\deprecated\ccdeprecated.h(833) : see declaration of 'cocos2d::CCPoint'
2>f:\cocos\p\demo\classes\gamescene.cpp(58): error C2065: 'zxsprite' : undeclared identifier
2>f:\cocos\p\demo\classes\gamescene.cpp(58): error C2227: left of '->setPosition' must point to class/struct/union/generic type
2>          type is 'unknown-type'
2>f:\cocos\p\demo\classes\gamescene.cpp(64): error C2511: 'void GameScene::onTouchMoved(cocos2d::Touch *,cocos2d::Event *)' : overloaded member function not found in 'GameScene'
2>          f:\cocos\p\demo\classes\gamescene.h(4) : see declaration of 'GameScene'
2>f:\cocos\p\demo\classes\gamescene.cpp(70): error C2511: 'void GameScene::onTouchEnded(cocos2d::Touch *,cocos2d::Event *)' : overloaded member function not found in 'GameScene'
2>          f:\cocos\p\demo\classes\gamescene.h(4) : see declaration of 'GameScene'
2>f:\cocos\p\demo\classes\gamescene.cpp(75): error C2511: 'void GameScene::onTouchCancelled(cocos2d::Touch *,cocos2d::Event *)' : overloaded member function not found in 'GameScene'

2>          f:\cocos\p\demo\classes\gamescene.h(4) : see declaration of 'GameScene'

 
解决办法:
在cocos2d.h包含路径下添加USING_NS_CC即可.
#include "cocos2d.h"

USING_NS_CC;

 
 
 
在<权威指南>中关于注册触摸响应的方法在3.x中已经不再支持.
在权威指南中是需要重载registerWithTouchDispatcher()函数进行操作的.但我当前使用的3.12版本不再支持.
因为:  在Layer.h源码中有 final 关键字. 所以我认为应该就是不再使用.(不知道是不是这么理解)
    /** If isTouchEnabled, this method is called onEnter. Override it to change the
    way Layer receives touch events.
    ( Default: TouchDispatcher::sharedDispatcher()->addStandardDelegate(this,0); )
    Example:
    void Layer::registerWithTouchDispatcher()
    {
    TouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,INT_MIN+1,true);
    }
    @since v0.8.0
    @js NA
    */

CC_DEPRECATED_ATTRIBUTE virtual void registerWithTouchDispatcher() final {};

 
 
 
 
 
 
 
 
 
 
 
 
 

cocos2dx触摸响应的更多相关文章

  1. cocos2d-x触摸事件优先级的探究与实践

    如何让自定义Layer触发触摸事件? bool LayerXXX::init() { this->setTouchEnabled(true); CCTouchDispatcher* td = C ...

  2. cocos2d-x触摸事件优先级

     CCTouchDispatcher是管理cocos2d-x中全部Touch事件派发的类, CCTouchDispatcher中包括了两个CCTouchHandler的列表, 分别存储Standa ...

  3. React-native 中的触摸响应功能

    我们在做APP的时候,与桌面应用系统不同的是触摸响应. web页面对触摸响应的支持和原生的APP有着很大的差异. 基本用法 componentWillMount: function() { this. ...

  4. 关于cocostudio动态添加控件触摸响应无效的学习

    time:2015/04/19 1. 描述 * 把studio制作的ui加载之后,动态添加事件(比如说,单点触摸),结果回调函数(eg:onTouchBegan等)根本没有响应! * 另外,网上有朋友 ...

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

    游戏不同于影音,强交互性是其一大特色,在游戏中主要体现为接受用户的输入并响应.智能手机触摸是其重要的输入方式. 在cocos2d-x中,触摸分为单点触摸和多点触摸. 单点触摸:主要继承CCTarget ...

  6. cocos2dx游戏--欢欢英雄传说--添加触摸响应

    主要的调整就是将HelloWorldScene改成了MainSecne,然后将Player作为了MainScene的私有成员变量来处理.修改了人物图片,使用了网上找到的三国战纪的人物素材代替我之前画的 ...

  7. cocos2d-x触摸分发器原理

    屏幕捕捉到触摸消息的派发流程: 如果有一个组件如果想要接收触摸事件,会通过继承一个CCTouchDelegate接口注册给CCTouchDispatcher,CCTouchDispatcher 中维护 ...

  8. cocos2dx 触摸钢琴

    1.触摸钢琴项目描写叙述 1.1触摸钢琴功能描写叙述 实现手指点按琴键发出相应的音调,按下位置出现星云的粒子特效,滚动实现移动到别的琴键的位置,按下安卓返回键运行关闭. 1.2触摸钢琴所需技术 粒子特 ...

  9. 3.x的触摸响应机制

    第一种是采用函数回调,主要是用于MenuItem [cpp] view plaincopy // a selector callback void menuCloseCallback(Object*  ...

随机推荐

  1. 其它课程中的python---2、NumPy模块

    其它课程中的python---2.NumPy模块 一.总结 一句话总结: numpy在数组计算方面又快又方便 1.NumPy中的ndarray是一个多维数组对象,该对象由哪两部分组成? -实际的数据 ...

  2. Delphi中的Sender:TObject对象解析转载

    https://blog.csdn.net/jl_tiny/article/details/24376661 Delphi中的Sender:TObject对象解析 procedure TForm1.B ...

  3. XDTIC2019招新笔试题 + 官方解答

    腾讯创新俱乐部2019年招新笔试试题   [1] 小宗学长正在努力学习数论,他写下了一个奇怪的算式: \[ 2019^{2018^{2017^{\dots^{2^1}}}} \] 算式的结果一定很大, ...

  4. NEO4J亿级数据全文索引构建优化

    NEO4J亿级数据全文索引构建优化 一.数据量规模(亿级) 二.构建索引的方式 三.构建索引发生的异常 四.全文索引代码优化 1.Java.lang.OutOfMemoryError 2.访问数据库时 ...

  5. JS鼠标经过

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...

  6. C++: class sizeof

    https://blog.csdn.net/fengxinlinux/article/details/72836199 C++中类所占的大小计算,因为涉及到虚函数成员,静态成员,虚继承,多继承以及空类 ...

  7. android 自定义shape 带阴影边框效果

    在drawable 里面 建立一个 xml 直接复制 看效果 自己调试就可以 <?xml version="1.0" encoding="utf-8"?& ...

  8. Fence

    Fence 有一个长度为n的\([1,n]\)墙,有k位工人,第i位工人有参数\(s_i,p_i,l_i\),意思该位工人可以刷包含\(s_i\)的长度小于等于\(l_i\)的区间,报酬为区间长度乘以 ...

  9. Java 多线程 - synchronized与Lock的区别

    https://blog.csdn.net/qq_39521554/article/details/81130442 http://www.cnblogs.com/huangbw/p/8516024. ...

  10. spring整合Quartz框架过程,大家可以参考下

    这篇文章详细介绍了spring集成quartz框架流程,通过示例代码进行了详细说明,对学习或任务有参考学习价值,并可供需要的朋友参考. 1.quartz框架简介(m.0831jl.com) quart ...