Cocos2d-x常用功能-Cocos2d-x用户交互事件处理:触摸、传感器、物理按键

news/2024/7/5 6:09:40
第三阶段:常用功能3-
--Cocos2d-x常用功能-Cocos2d-x用户交互事件处理:触摸、传感器、物理按键(共6部分)
1.Cocos2d-x单点触摸
    Size size = Director::getInstance()->getVisibleSize();
   
   
   
auto label = LabelTTF::create( "Click me" , "Courier" , 30 );
    label->setPosition(size.width/
2 , size.height/ 2 );
    addChild(label);
   
   
auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [](Touch *t,Event *e){
       
       
if (e->getCurrentTarget()->getBoundingBox().containsPoint(t->getLocation())) {
           
            log(
"onTouchBegan" );
        }
       
       
return true ;
    };
   
    listener->onTouchMoved = [](Touch* t,Event *e){
        log(
"onTouchMoved" );
    };
   
    listener->onTouchEnded = [](Touch *t,Event *e){
        log(
"onTouchEnd" );
    };
   
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);
2.Cocos2d-x触摸目标判断
//获取当前事件目标也就是label
        if (e->getCurrentTarget()->getBoundingBox().containsPoint(t->getLocation())) {
           
            log(
"onTouchBegan" );
        }
       
3.Cocos2d-x事件传递
onTouchBegan事件 return true ;之后才能执行 onTouchMoved、 onTouchEnded
    listener->onTouchMoved = [](Touch* t,Event *e){
        log(
"onTouchMoved" );
    };
   
    listener->onTouchEnded = [](Touch *t,Event *e){
        log(
"onTouchEnd" );
    };
   
4.Cocos2d-x多点触摸
安卓的DNK首先配置在环境变量里面
proj.android--- build_native.py
    Size visibleSize = Director::getInstance()->getVisibleSize();
   
   
auto listener = EventListenerTouchAllAtOnce::create();
   
    listener->onTouchesBegan = [](std::vector<Touch*> ts,Event *e){
        log(
"onTouchesBegan" );
    };
   
    listener->onTouchesMoved = [](std::vector<Touch*> ts,Event *e){
        log(
"touches moved ,and touch count is %ld" ,ts.size());
    };
   
   
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

5.Cocos2d-x加速度
acceleration 加速度 加速   stamp 标志/ 邮票;印记   double类型  %g
JAVA ADT  里面 右键import  打开proj.android,    然后删除依赖项
cocos2d ▸ cocos ▸ platform ▸ android ▸ java ▸ src  放在JAVA ADT 的 src  里面  按下F11 选中Android Aplication

//加速度传感器默认处于关闭状态,需要打开
    Device::setAccelerometerEnabled( true );
   
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(EventListenerAcceleration::create([](Acceleration *a,Event *e){
       
        log(
"x:%g,y:%g,z:%g" ,a->x,a->y,a->z);
       
    }), this);

6.Cocos2d-x物理按键交互
    auto listener = EventListenerKeyboard::create();
    listener->onKeyReleased = [](EventKeyboard::KeyCode code,Event *e){
        log(
"key code : %d" ,code);
       
       
switch (code) {
           
case EventKeyboard::KeyCode::KEY_BACKSPACE:
                Director::getInstance()->end();
               
break ;
               
           
default :
               
break ;
        }
    };
   
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

http://www.niftyadmin.cn/n/3585854.html

相关文章

PHP输出图像imagegif、imagejpeg与imagepng函数用法

详细的分析了imagegif()、imagejpeg()、imagepng()和imagewbmp()函数的功能、参数含义及使用技巧 imagegif()、imagejpeg()、imagepng() 和 imagewbmp() 函数分别允许以 GIF、JPEG、PNG 和 WBMP 格式将图像输出到浏览器或文件。 PHP 输出图像 PHP 允许将图像以不同格式输出&…

nginx 版本升级和添加模块详解

版本升级 把1.16.0版本升级为1.18.0 查看本机现在版本为1.16.0 [rootlocalhost ]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.16.0 1&#xff0c;下载1.18.0的版本 [rootlocalhost ]# wget http://nginx.org/download/nginx-1.18.0.tar.gz 2&#xff0c;解压 […

nginx 证书申请和证书的使用

1&#xff0c;证书申请 申请证书要有阿里云的域名 阿里云提供免费的证书&#xff0c;不需要人工审核&#xff0c;用来做测试是非常不错的选择&#xff0c;申请地址如下URL。 购买完了以后申请证书 证书签发之后&#xff0c;可以在列表中可以看到状态栏中为 已签发 &#xff0…

getopt和getopt_long函数

本文转自&#xff1a;http://blog.csdn.net/cashey1991/article/details/7942809 平时在写程序时常常需要对命令行参数进行处理&#xff0c;当命令行参数个数较多时&#xff0c;如果按照顺序一个一个定义参数含义很容易造成混乱&#xff0c;而且如果程序只按顺序处理参数的话&a…

'mysql.innodb_index_stats' doesn't exist when using LOCK TABLES问题原因及解决方法

前言 下面总结的是使用mysqldump备份整个数据库时的常见的一个报错的原因及解决方法。 报错如下 mysqldump: Got error: 1146: Table ‘mysql.innodb_index_stats’ doesn’t exist when using LOCK TABLES 执行导出数据库时报1146&#xff0c;mysql_innodb_table_stats显示没有…

数据Cocos2d-x常用功能-Cocos2d-x常用工具:计时器、数据读写、文件读写(共6部分)

第三阶段&#xff1a;常用功能5 1.Cocos2d-x计时器每一帧执行的时候执行一次#include "cocos2d.h"class HelloWorld : public cocos2d::Layer { private: cocos2d::LabelTTF *label; public: // theres no id in cpp, so we recommend returning…

lvs架构

lvs 4种模式 1、nat(网络地址转换模式) 2、dr(直接路由模式) 3、tun(隧道模式) 4、full-nat(双向转换模式) 1&#xff0c;nat&#xff08;网络地址转换模式架构&#xff09; 1、nat模式优势是&#xff0c;后端可以是任意支持tcp/ip的操作系统&#xff0c;缺点是响应时回包必须…

容器:用empty来代替检查size()是否为0

对于任意容器c&#xff0c;写下 if (c.size() 0)... 本质上等价于写下 if (c.empty())... 这就是例子。你可能会奇怪为什么一个构造会比另一个好&#xff0c;特别是事实上empty的典型实现是一个返回size是否返回0的内联函数。 你应该首选empty的构造&#xff0c;而且理由很…