如何在 flutter 中播放特定持续时间的 lottie 动画
How to play lottie animation for specific time duration in flutter
我想在 flutter 中播放特定时间的 lottie 动画。我不想通过快进播放它。就像如果我的动画包含总 90 frames
那么如果我只想先播放 30 frames
那么我可以实现这个吗?或喜欢如果我的动画总共有 2 秒但我只想播放第一秒。那么如何使用动画控制器或任何其他东西来做到这一点?
好的,您可以尝试直接编辑控制器,这样您的 initState 将如下所示:
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this);
_controller.addListener(() {
print(_controller.value);
// if the full duration of the animation is 8 secs then 0.5 is 4 secs
if (_controller.value > 0.5) {
// When it gets there hold it there.
_controller.value = 0.5;
}
});
}
然后您的 lottie 小部件如下所示:
Lottie.asset(
'asset/path.json',
controller: _controller,
onLoaded: (comp){
_controller
..duration = comp.duration
..forward();
})
------------ 下面的先前答案------------
还没有机会检查这个,但尝试向您的动画添加控制器并在 onLoaded 上使用 animateTo。
Lottie.asset(
'asset/path.json',
controller: _controller,
onLoaded: (comp){
_controller.animateTo(frameNumber);
})
我想在 flutter 中播放特定时间的 lottie 动画。我不想通过快进播放它。就像如果我的动画包含总 90 frames
那么如果我只想先播放 30 frames
那么我可以实现这个吗?或喜欢如果我的动画总共有 2 秒但我只想播放第一秒。那么如何使用动画控制器或任何其他东西来做到这一点?
好的,您可以尝试直接编辑控制器,这样您的 initState 将如下所示:
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this);
_controller.addListener(() {
print(_controller.value);
// if the full duration of the animation is 8 secs then 0.5 is 4 secs
if (_controller.value > 0.5) {
// When it gets there hold it there.
_controller.value = 0.5;
}
});
}
然后您的 lottie 小部件如下所示:
Lottie.asset(
'asset/path.json',
controller: _controller,
onLoaded: (comp){
_controller
..duration = comp.duration
..forward();
})
------------ 下面的先前答案------------
还没有机会检查这个,但尝试向您的动画添加控制器并在 onLoaded 上使用 animateTo。
Lottie.asset(
'asset/path.json',
controller: _controller,
onLoaded: (comp){
_controller.animateTo(frameNumber);
})