一:触屏事件
在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;