重力感应控制人物移到,有时人物会突然消失.
我在onAcceleration()方法里面,获取重力感应的x,y值,然后控制人物移到,并且加了屏幕边界判断,为什么有时会出现人物莫名奇妙突然消失的问题。
比如有可能突然就在屏幕中间就消失了。
代码如下
ps:android没有遇见过,,苹果上有时会出现。。
void PlayerLayer::onAcceleration(Acceleration* acc, Event* event){
auto pDir = Director::getInstance();
/*FIXME: Testing on the Nexus S sometimes _ball is NULL */
if ( m_player == NULL ) {
return;
}
auto ptNow = m_player->getPosition();
auto ptTemp = pDir->convertToUI(ptNow);
double fx = 1.0;
double fy = 1.0;
fx = fabs(acc->x)/acc->x;
fy = fabs(acc->y)/acc->y;
//从 -.5 到 .5
float by = acc->y+.5;
if(by == 0) {//
by = 0.01;
}
by = MIN(.5, by);
fy = fabs(by)/by;
ptTemp.x += (acc->x *9.81f)*(acc->x*9.81f)*fx;
ptTemp.y -= (by *9.81f)*(by *9.81f)*fy;
auto ptNext = pDir->convertToGL(ptTemp);
FIX_POS(ptNext.x, (VisibleRect::left().x), (VisibleRect::right().x ));
FIX_POS(ptNext.y, (VisibleRect::bottom().y), (VisibleRect::top().y));
m_player->setPosition(ptNext);
}