首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滑动过程中TileMap中的移动延迟

滑动过程中TileMap中的移动延迟
EN

Stack Overflow用户
提问于 2013-12-18 21:41:01
回答 2查看 182关注 0票数 2

我正在开发一个等距平铺地图(44x44大小)的游戏。在iPad-1上滑动时,我无法移动地图,但它在iPad-2上运行得很好。移动贴图并不平滑,即使只有没有精灵的贴图也是如此。

我使用easeout动作来给出迟缓的动作:

代码语言:javascript
复制
_tileMap->runAction(CCEaseOut::create(CCMoveTo::create(time, bottomLeft),2))  

代码语言:javascript
复制
[tileMap runAction:([CCEaseOut actionWithAction:([CCMoveTo actionWithDuration:time position:postion]) rate:2 ])]

我尝试了2d投影,并关闭了子像素渲染(在ccConfig.h中)。但是这个问题仍然存在。

我的刷卡处理函数是这样的..

代码语言:javascript
复制
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));

} 
EN

回答 2

Stack Overflow用户

发布于 2013-12-21 21:52:27

如果两种实现之间的唯一区别是您正在运行的硬件,那么听起来就像是您遇到了处理瓶颈。也就是说,你是在要求iPad-1满足一个处理时间表,而鉴于iPad-1内置的硬件,它无法满足这个时间表。

您似乎不太可能修改框架以提高其性能,significantly...unless您编写了自己的自定义实现。这是可能的,但是你有多少时间呢?此外,这也是您使用框架而不是编写框架的原因。

除非有一些知识可以提高iPad-1与iPad-2的性能(即框架中的某些东西实际上是不同的,但可以修复),否则似乎最好的选择是在iPad-1上运行时出现某种性能下降。

选项:

  1. 默认情况下,帧速率设置为60 fps。你应该能够以30帧的速度脱颖而出。如果设备是iPad-1,请调低帧速率。您也可以仅在关键时间减少它(例如,操作降低帧速率,执行效果,然后在完成时增加帧速率)。
  2. 不同的接口。与iPad-2 (或其他)系统相比,在iPad-1上使用较低分辨率的图形。在iPad-1.
  3. Profile上,
  4. 使用“跳跃”而不是平滑移动,从而找出时间的瓶颈所在。如果你有一个大规模的人工智能基础设施(运行很多搜索?),想出一种方法来在动作进行时关闭这些。
  5. else...do you have to make it on the of or you just to make it it work
票数 1
EN

Stack Overflow用户

发布于 2013-12-27 20:41:31

我在iPad1上也面临着同样的问题,我的老板也不同意我的“跳跃”。因此,您可以不使用easeout,而只是让swipe工作,而不是延迟运动。但是,如果完美是您呼吸的氧气,我建议您使用回调函数,并在每次迭代中将速度向量减少一些因子。这应该是可行的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20659781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档