TestCpp----AccelerometerTest

加速计的使用为了更好的响应用户的操作,其原理主要是通过改变精灵的坐标,实现移动的效果、

首先开启加速计控制权限:

setAccelerometerEnabled(true);

然后初始化物体的位置坐标,并添加到父节点:

m_pBall = CCSprite::create("Images/ball.png");

m_pBall->setPosition(ccp(VisibleRect::center().x, VisibleRect::center().y));
addChild(m_pBall);

m_pBall->retain();//防止被释放了,就没得玩喽

转坐标函数是这个:

void AccelerometerTest::didAccelerate(CCAcceleration* pAccelerationValue)

其中 FIX_POS(ptNext.x, (VisibleRect::left().x+ballSize.width / 2.0), (VisibleRect::right().x - ballSize.width / 2.0));

这段代码里面的FIX_POS是一个宏定义:

#define FIX_POS(_pos, _min, _max) \
if (_pos < _min) \
_pos = _min; \
else if (_pos > _max) \
_pos = _max; \

其中CCPoint ptNext = pDir->convertToGL(ptTemp);

这段代码里面convertToGL():

CCDirector.sharedDirector().convertToUI()方法,这个方法是将坐标转换成为UI坐标,要知道,在cocos2d里面坐标是用左下角向上的,而不是一般的左上角,用这个方法可以方便的转换。

最后重新设置精灵的坐标即可:

 m_pBall->setPosition(ptNext);

PS:在智能手机上面,可以通过改变手机的方向,运用重力感应操作球的方向。而在电脑上运行的时候按住键盘的上,下,左,右,键效果是一样的。

祝你学习愉快!

posted @ 2013-05-25 14:53  PenrodNie  阅读(792)  评论(0编辑  收藏  举报