【8】coco2d-x事件处理机制一

来源:互联网 发布:淘宝航模电池套装包邮 编辑:程序博客网 时间:2024/05/26 05:53

一:触屏事件

在Coco2d-x中,继承触屏代理协议CCTouchDelegate可以检测触屏事件并调用回调函数。下图是CCTouchDelegate类继承关系图:




CCStandardTouchDelegate是标准的获得多点触摸的范例。CCTargeteTouchDelegate不用处理触摸点集合,它是返回单点。但是CCTargeteTouchDelegate并没有屏蔽多点触摸,而是将多点离散成单点,同时传递了过来。

1:触点类CCTouch

 CCTouch封装了触摸点的信息。包括触摸点横纵坐标和触摸点ID号,CCTouch作为参数在函数中传递。

获取坐标值:

CCPoint  point=touch->getLocationInView();

point=CCDirector->sharedDirector()->converTOGL(point);

CCouch在触摸触摸函数中传递,触摸函数如下图:



要先使用触摸,必须先为继承CCTouchDeleagte类加入触摸

加入单点触摸:pDirector->getTouchDispatcher()->addTargetedDelegate(this,0,true);

加入多点触摸:PDirector->getTouchDispatcher()->addStandardTouchDelegate(this,0);

不同的是在单点触摸中传递的产生CCTouch,可以直接获取触摸点坐标。

不同的是在单点触摸中传递的产生CCTouch,可以直接获取触摸点坐标。二在多点触摸中,传递的参数是CCSet*pTouches,必须迭代CCset获得各触摸点

二:加速传感器事件

       Cocod-x中使用加速传感器代理CCAcceleromterDelegate提供的方法来接收加速传感器的变化,CCLayer继承了CCAcceleromterDelegate,所有CClayer及其子类都可以使用获得加速传感器的方法。

CCAcceleration结构体封装了加速传感器的数据。包括时间赚和坐标轴上的加速度值(以重力加速度为单位),要获得坐标轴的加速度值时,必须乘以重力加速度。

       如下代码:

       setAcceleromaterEnabled(true);//可以捕获加速时间

       重写didAccelerater(CCAcceleration* pAccelerationValueValue)捕获

 

       ptTemp.x=pAccelerationValue.x  *9.81f;

     ptTemp.y=pAccelerationValue.y*9.81f;






1 0