0

我刚刚从 Flame 1.0.0-rc8 更新到 Flame 1.0.0-releasecandidate.14,但现在我的叠加层(菜单、分数等)无法在不闪烁游戏的情况下刷新。

这是我的代码的简历:

class _Boat extends State<Boat> with WidgetsBindingObserver {
  BoatGame game;


  @override
  void initState() {
    game = new BoatGame();
    refreshScore();
  }

  refreshScore() async {
    timer = Timer.periodic(Duration(milliseconds: 300), (timer) {
      if (mounted) {
        if (game != null) {
          score = game.getScore();
          setState(() {});
        }
      }
    });
  }


  @override
  Widget build(BuildContext context) {
    Stack(
      children: [
      GameWidget(game: game,),
      Text("My Score: $score");
    ],
  }
}

因此,每 300 毫秒,我的屏幕就会闪烁一次,如果我删除 SetState,则不会刷新分数。

有什么解决办法?谢谢

4

1 回答 1

0

尝试像这样使用 refreshScore() :

 refreshScore() async {
timer = Timer.periodic(Duration(milliseconds: 300), (timer) {
  if (mounted) {
    if (game != null) {
      setState(() {
      score = game.getScore();
       });
    }
  }
});
}

然后 setState 将重建专注于您的分数的状态。

希望我能帮忙:)

于 2021-09-29T13:53:05.233 回答