我正在使用等距瓷砖地图(44x44尺寸)开发游戏。在iPad-1上滑动时我无法移动地图,但在iPad-2上运行正常。即使只有没有精灵的地图,移动地图也不顺畅。
我使用缓解动作来提出迟钝动作:
_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));
}
答案 0 :(得分:1)
如果两个实现之间的唯一区别是您正在运行的硬件,那么听起来您有一个处理瓶颈。也就是说,你要求iPad-1满足处理时间线,因为它内置的硬件不能满足它。
除非您编写自己的自定义实现,否则您似乎不太可能重做框架以显着提高其性能。这是可能的,但你有多少时间?此外,这就是你使用框架而不是编写框架的原因。
除了一些改善iPad-1与iPad-2性能的知识(即框架中实际上不同但可修复的东西),似乎最好的选择是在某种程度上降低性能。在iPad-1上运行。
选项:
答案 1 :(得分:0)
我面临着ipad 1的同样问题,我的老板也不同意“跳”。因此,不使用缓动,您可以在没有延迟运动的情况下进行滑动。 但如果完美是你呼吸的氧气,我建议使用回调功能,并在每次迭代中通过某个因素降低速度矢量。这应该工作