最近做了精灵的移动,在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里试试