我正在开发一个等距平铺地图(44x44大小)的游戏。在iPad-1上滑动时,我无法移动地图,但它在iPad-2上运行得很好。移动贴图并不平滑,即使只有没有精灵的贴图也是如此。
我使用easeout动作来给出迟缓的动作:
_tileMap->runAction(CCEaseOut::create(CCMoveTo::create(time, bottomLeft),2)) 或
[tileMap runAction:([CCEaseOut actionWithAction:([CCMoveTo actionWithDuration:time position:postion]) rate:2 ])]我尝试了2d投影,并关闭了子像素渲染(在ccConfig.h中)。但是这个问题仍然存在。
我的刷卡处理函数是这样的..
void GameController::SwipeHander(CCPoint vector,float speed)
{
CCPoint change=ccpMult(vector, speed/(1000)); //it is a wh
CCPoint bottomLeft =ccpSub(_tileMap->getPosition(), change); //point where map gonna move
// just to check bottomleft comes in bounding box
if (bottomLeft.x >0) {
bottomLeft.x = 0;
}
if (bottomLeft.y>0) {
bottomLeft.y = 0;
}
if (bottomLeft.x < -(mapWidth*_tileMap->getScale() - _screenSize.width)) {
bottomLeft.x = -(mapWidth*_tileMap->getScale()- _screenSize.width);
}
if (bottomLeft.y <-(mapHieght*_tileMap->getScale() - _screenSize.height)) {
bottomLeft.y = - (mapHieght*_tileMap->getScale() - _screenSize.height);
}
float dis=_tileMap->getPosition().getDistance(bottomLeft);
float time=(dis/speed);
_tileMap->stopAllActions();
_tileMap->runAction(CCEaseOut::create(CCMoveTo::create(time, bottomLeft),1.5));
} 发布于 2013-12-21 21:52:27
如果两种实现之间的唯一区别是您正在运行的硬件,那么听起来就像是您遇到了处理瓶颈。也就是说,你是在要求iPad-1满足一个处理时间表,而鉴于iPad-1内置的硬件,它无法满足这个时间表。
您似乎不太可能修改框架以提高其性能,significantly...unless您编写了自己的自定义实现。这是可能的,但是你有多少时间呢?此外,这也是您使用框架而不是编写框架的原因。
除非有一些知识可以提高iPad-1与iPad-2的性能(即框架中的某些东西实际上是不同的,但可以修复),否则似乎最好的选择是在iPad-1上运行时出现某种性能下降。
选项:
发布于 2013-12-27 20:41:31
我在iPad1上也面临着同样的问题,我的老板也不同意我的“跳跃”。因此,您可以不使用easeout,而只是让swipe工作,而不是延迟运动。但是,如果完美是您呼吸的氧气,我建议您使用回调函数,并在每次迭代中将速度向量减少一些因子。这应该是可行的
https://stackoverflow.com/questions/20659781
复制相似问题