action动作,可以立即完成吗?

action动作,可以立即完成吗?

比如 3秒 moveTo 到B点, 移动1.5秒之后,可以调用什么方法,让动作瞬间完成吗?

1赞

找到这个动作,我猜测是个 ccsequence。 然后执行它的 update(999999999) 就可以了。然后node.stopAction就行了。

测试案例如下:

楼主可以试一下。
一般来说,action是CCActionManager的update统一触发各个符合条件的action的step的,step又调update。因此要手动快进完成动作,必须手动对action调update(dt), 参数dt可以自己指定快进时间。

1.5s后把动作停下来,再手动将节点移到目标位置不就可以了

1赞

手动update()对简单action有效,如果是一个sequence之类的组合action,update()只会更新当前进行中的子action。
简单场景还是用 Hz2596的方法对系统侵入性小点。

1赞

测试了一下, 确实

复杂度太大了… 一个单位可能在多种情况下做不同的action . 不好控制

1赞

有时候不知道当前是什么action,不知道最终的效果值
只能保存一个action引用.
要是action能带一个方法直接完成就好了

1赞

找到这个动作,然后执行它的 step(999999999) 试试。(不是update)

可以用一个变量保存当前所做的动作类型,总共就三个常用的(旋转、位移、缩放),后面通过变量来判断当前执行action就可以了

换一种思路,把action的speed调成极大值,让action快速结束。

创建action的时候保存这个对象最终的坐标等属性

最快也要1帧才会停止…而在需要停止动作时,需要立即停止好执行下一个动作了…

动作的衔接处理方式,可以考虑在上一个action末尾事先放一个回调函数。如果需要切换动作,则在回调函数里执行新动作。

至于1帧后停止的问题,如果这1帧很重要的话那我的方法是解不了的。

最好你能描述一下你在做的功能,不只是关注如何实现停止action,或许会有更好的解决方案。

在遇到需要立刻结束节点动作的地方,直接调用一个 0秒的回复到你需要的状态的新action,就能直接取消掉之前的action
然后直接到达目标状态,这cc里面的动画组件其实也是一样的思路,你看一个在做攻击动画的角色,你立刻调用ready的动画 ,他不是立刻就结束攻击动画回复到站立状态了么,道理是一样的

我在做一个点击以后会滑出的菜单条的时候无意发现的,当我点取消的时候,缩回的动画会直接(取代)滑出的动画,
并不会让菜单滑出的动画完全走完到顶端
我这个滑出缩回的动作是用cc.tween做的runaction也是一回事