首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤振setState()没有更新Flame SpriteAnimationWidget

颤振setState()没有更新Flame SpriteAnimationWidget
EN

Stack Overflow用户
提问于 2021-11-30 18:57:54
回答 1查看 250关注 0票数 2

我目前使用的SpriteAnimationWidget从火焰,我想有不同的动画点击按钮。

为了测试这是否有效,我将通过单击按钮来更改SpriteAnimationWidget的动画参数。1秒后,小部件必须返回到它的原始动画。

这是我的代码:

代码语言:javascript
复制
Future<void> playReaction() async {
  setState(() {
    isPlaying = true;
    state = 'reaction';
  });

  await Future.delayed(Duration(milliseconds: 1000));

  setState(() {
    isPlaying = false;
    state = 'idle';
  });
}

在建筑里面,我回来了:

代码语言:javascript
复制
if(state == 'reaction') {
  spriteAnimation = reactionSprite!.createAnimation(row: 0, stepTime: 0.1, from: 0,  to: 10);
  print('reaction');
}
else if(state == 'idle'){
  spriteAnimation = sprite!.createAnimation(row: 1, stepTime: 0.2, from: 0,  to: 4);
  print('idle');
}

return Container(
  height: widget.size,
  child: Stack(
      fit: StackFit.expand,
      children: [
        Positioned.fill(
          child: SpriteAnimationWidget(
            animation: spriteAnimation!,
            anchor: Anchor.center,
          )
        ),
      ]
  ),
);

变量sprite和reactionSprite是我使用SpriteSheet.fromColumnsAndRows()预装的雪碧表。

问题是,虽然我的应用程序成功地运行了playReaction()并达到了print(' reaction '),但是SpriteAnimationWidget仍然在播放空闲的动画而不是反应动画。我知道它正在被重建,因为我可以看到,当我点击按钮(加上打印消息)时,动画中有一个轻微的不自然的不连续性。

为什么setState()不使用新的动画参数更新SpriteAnimationWidget?

我对颤音和火焰比较陌生,所以我希望得到一些帮助或建议。

ps。我尝试使用相同的sprite工作表来进行不同行的更改(而不是使用上面代码中完全不同的sprite工作表),但结果是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-12 14:24:35

这实际上是个bug,我们正在修复它,这里

同时,作为一种解决方法,您可以在每次更改动画并更新小部件时更改小部件的键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70174657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档