[LayaAir3]Laya 2.x/3.x 演示项目中 Laya.timer.scale 和 Laya.SpineSkeleton.playbackRate 对部分骨骼加速不生效
3.x 这个骨骼使用 Laya.timer.scale 和 Laya.SpineSkeleton.playbackRate 只能加速2倍左右,再高设置无效好像有加速上限一样。
在2.x中则是完全不生效 无法加速。作为对比 其他两个骨骼的增减速是受影响的,也可以加速至10倍以上。请问这是什么原因导致这个问题?骨骼动作使用了不支持动作参数?还是某些骨骼版本不支持?还是其他原因,望大大快速回复
在2.x中则是完全不生效 无法加速。作为对比 其他两个骨骼的增减速是受影响的,也可以加速至10倍以上。请问这是什么原因导致这个问题?骨骼动作使用了不支持动作参数?还是某些骨骼版本不支持?还是其他原因,望大大快速回复
没有找到相关结果
已邀请:

2 个回复
layabox
赞同来自:
如果你需要通过整体的播放加速,光设置Laya.timer.scale肯定不行,会和你之前遇到的问题一样,3.2.3开始,你可以通过设置maxDetlaTime来改变引擎的默认值。
几种方式,
1、在脚本的onUpdate里设置,代码示例如下:
onUpdate(): void {
this.spineAni.maxDetlaTime = Laya.timer.delta / 1000 * Laya.timer.scale;
}
这种方式准确,但不建议。
2、直接设置一个较大的maxDetlaTime值,相当于取消了引擎内部的限制,完全取决于Laya.timer.scale。
虽然我们提供了maxDetlaTime,但是,以上两种都不建议,Laya.timer.scale会影响全局,只有特殊情况下,才需要使用maxDetlaTime来控制。
通常情况下,请使用playbackRate来控制spine的播放速度。这个方法简单有效,可以随时用,不需要等发3.2.3版
layabox
赞同来自:
playSpine(): void {第二,你通过Laya.timer.scale设置比较大的值,受限制是因为引擎中作了一些优化保护,让动画不至于播放过快。如果你想自己控制速度,我们也可以放开。未来将于3.2.3及以上版本上开放内部用的最大maxDetlaTime加速限制接口,用于开发者自行设置播放加速。//找到spine动画组件
this.spineAni = this.spineNode.getComponent(Laya.Spine2DRenderNode);
//获得spine动画的数量,这里要重点提醒的是,由于spine组件只有Play会由引擎去加载完成后才去播放,调用其它的API,务必要保障spine动画资源已经加载完成。否则会报错。
this.spineAniNum = this.spineAni.getAnimNum();
//按索引播放动画
this.spineAni.play(this.spineAniIndex, true);
//设置播放速率,这里设置成10倍速播放
this.spineAni.playbackRate(10);
//侦听点击,换动画
this.spineBtn.on(Laya.Event.CLICK, this, this.changeAni);
}