首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flame Engine调整屏幕大小的问题

使用Flame Engine调整屏幕大小的问题
EN

Stack Overflow用户
提问于 2021-11-19 15:22:55
回答 1查看 101关注 0票数 0

我正在尝试直接在我的flutter网站上嵌入一个使用火焰引擎的小游戏。

我已经设法创建了一个容器,其中包含GameWidget

代码语言:javascript
复制
class gameContainer extends StatelessWidget {
 const gameContainer({Key? key, required this.width}) : super(key: key);
   final double width;

   @override
   Widget build(BuildContext context) {
     return Container(
       width: width,
       height: 100,
       padding: EdgeInsets.symmetric(horizontal: 40, vertical: 10),
       child: GameWidget(game: game()),
    );
  }
}

我已经运行了游戏,在屏幕上显示了一个玩家并在移动。

我的宽度是动态的,我希望能够调整屏幕的大小和GameViewport来调整自己的大小。问题是,当屏幕调整自己的大小时,整个游戏就会重置。onGameResize和onLoad都被称为:最终结果我失去了我的球员位置。

它试图在游戏类中调整大小之前覆盖onGameResize以获取玩家位置,但在调用它时玩家位置已经设置为0,0。

我已经看了几个教程,但我不知道如何通过这个问题去哪里。

任何从这里开始的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-19 15:49:11

这是因为您是在GameWidget内部启动游戏的,如果您在小部件外部启动它,则应该没问题。flutter窗口小部件树是在调整大小时重新构建的,这就是您面临这个问题的原因。

代码语言:javascript
复制
class gameContainer extends StatelessWidget {
 const gameContainer({Key? key, required this.width}) : super(key: key);
   final double width;
   final FlameGame _game = game();

   @override
   Widget build(BuildContext context) {
     return Container(
       width: width,
       height: 100,
       padding: EdgeInsets.symmetric(horizontal: 40, vertical: 10),
       child: GameWidget(game: _game),
    );
  }
}

请记住,根据构建游戏的方式,您可能必须在游戏类中对onGameResize做出反应。

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

https://stackoverflow.com/questions/70037153

复制
相关文章

相似问题

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