精灵setPosition移动是会一卡一卡的

最近做了精灵的移动,在update里面通过setPosition随时更新精灵的位置,但是一卡一卡的呢 求解释……

有晓得的直接回复或者从群:66202765 讨论,急需……

我也遇到这个问题,不知道怎么解决啊

— Begin quote from ____

?峻?峰? 发表于 2013-3-12 09:09 url

你们移动不是使用速率增量的吗?
在每帧加上移动位移这样会少耗资源很多的,
用Action来每帧移动?…这样消 …

— End quote

那需要怎么处理呢

速率递增 就是 “过滤” 嘛 主要做 的是 sprite 一直在变的情况下 采用的 他这是做动画

需要频繁的改变对象的方向和速度。使用move动作都不是一个好的选择,首先频繁的创建新对象分配和释放内存增加了额外开销,更糟糕的是,如果不为动作留出一点时间,动作是不会执行的。例如,如果在每帧停止所有动作并为对象添加一个新的名为MoveBy的动作,对象不会有一丁点的移动!MoveBy动作只会在下一帧改变对象的位置。但是在下一帧你就停止了所有的动作,并加入了一个新的MoveBy动作。这样做下去只会让对象寸步不移。

针对这种解决方法是,使用速度代替对精灵位置的直接修改。为些可以设计三个设计参数:

1.减速值 值越低,改变方向速度越快

2.加速计灵敏度 值越高,对加速计输入反应越敏感

3.最大速度

速度 = 速度 * 减速值 + 加速计输入 * 加速计灵敏度

— Begin quote from ____

爱无界的痛 发表于 2013-3-11 13:15 url

怎么可能 你是想怎么移动啊 是每帧都要移动嘛 如果是每帧 的话最好是 每次只移动 帧率大小的位置 不然 会卡 …

— End quote

”如果是每帧 的话最好是 每次只移动 帧率大小的位置“ 每帧移动这么点的距离,感觉好慢啊

— Begin quote from ____

爱无界的痛 发表于 2013-3-11 13:17 url

要做递归动画最好是用CCMoveBy这个 可能比较好些 setpositon的话 是重新定位可能会导致 sprite的 位置变动 …

— End quote

CCMoveBy的话也是卡呢 如果处理不好time和distance的话 郁闷
大神明示啊 ,可否留qq进行探讨,我的qq:435666609

你每次移动的距离是多少撒 如果 不是帧数的距离肯定会卡的啊 为什么不用CCMoveTo那

— Begin quote from ____

爱无界的痛 发表于 2013-3-11 09:04 url

你每次移动的距离是多少撒 如果 不是帧数的距离肯定会卡的啊 为什么不用CCMoveTo那 …

— End quote

CCMoveTo也卡

怎么可能 你是想怎么移动啊 是每帧都要移动嘛 如果是每帧 的话最好是 每次只移动 帧率大小的位置 不然 会卡的 如果你是 每帧 去刷CCMoveTo肯定也会卡的 因为CCMoveTo是个动画 总有开始和结尾 去刷的话 会很不衔接也会卡的

要做递归动画最好是用CCMoveBy这个 可能比较好些 setpositon的话 是重新定位可能会导致 sprite的 位置变动卡

— Begin quote from ____

libii_yuan 发表于 2013-6-8 12:16 url

每帧都setpositon的话会导致绘制精灵的visit里的transform每帧都有坐标的转变,那可能就很卡了 …

— End quote

那岂不是我用converToNode……什么的更慢?

这么原始的问题我都没法解决,不知道大侠们怎么解决的

在update里面更新位置是没问题的,正常就是在update里面更新

…估计你是在update里不断地做setPosition或者moveTo吧?..最好结合CCSequence来做。肯定不能每一帧在update不断执行moveTo的,内存和逻辑都不允许。

楼主解决了没?我也遇到同样的问题,在update里面setposition移动layer使主角保持在屏幕中心,运行的时候,会发现主角走动的时候有前后晃动的感觉,看着很难受

update有个参数delta,
计算运动距离的时候考虑这个delta值(也就是时间差量)
通常都是 移动速度(像素/秒)×(delta)
理论上这样不会有问题,我都是这么处理的

你确定你的update是每一帧调用的不是你自定义时间的?

写到定时器里而不是update里试试