已经在节点run了一个action了。
运行过程中发现要提早结束,所以需要加快整个action的速度。
问。
怎么动态修改一个已经run的action的速度?
停掉它,再执行一个速度较快的
我目前是stopAllActions
然后再重新runaction结束的动作 外部加了个 cc.speed .没效果。。。。
我通常是直接修改时间参数,cc.speed没用过
代码贴一下, cc.speed 应该是可以实现你想要的效果的
var speed = cc.speed(cc.moveTo(10, cc.p(900, 900)), 1);
this.label.node.runAction(speed);
//speed._speed = 3;
speed.setSpeed(3);
经过测试, 上面这段代码效果正常 ,不过我不清楚这样直接访问下划线开头的变量是否合理.
2赞
直接访问私有变量不是好习惯 虽然js很灵活 但这样缺少可控性
我觉得最好是new Scheduler与 ActionManager 然手设置timeScale
再调用node的setActionManager setScheduler
谢谢指出错误, 但是感觉你这样做还是过于复杂了, cc.Speed 应该暴露出修改 _speed 的接口, 在 [CCAction 源码] (https://github.com/cocos-creator/engine/blob/52b1a7658c9ff0b86baa77c00050474db931fdc4/cocos2d/actions/CCAction.js#L290) 中看确实是有的.
只是不知道为什么没有提示出来, 我当时 cc.log 这个对象也没有看到这个函数. 但是我修改代码为:
speed.setSpeed(3);
也是可以运行的
.
恩 如果有接口这样设置当然是最好的.
我很久以前做的了, 当时先考虑speed 后来没办法只好用笨办法 哈哈
mark
自己管理动作,创建一个cc.ActionManager,将需要的加速的动作添加到里面,然后在组件update周期函数去更新,dt * 你的速度变量.