Flame 中 HasGameReference 和 findGame 的区别

问题描述 投票:0回答:1

我发现Flame文档示例代码中提供的示例中都使用了

HasGameReference
findGame()
https://github.com/flame-engine/flame/blob/main/doc/flame/examples/lib/router.dart

详情如下:

  • StartPage
    使用
    HasGameReference
    访问
    game
    属性。
  • PausePage
    同时使用
    HasGameReference
    findGame()
    函数。
    HasGameReference
    findGame()
    有什么区别?

起始页

class StartPage extends Component with HasGameReference<RouterGame> { 👈👈👈
  StartPage() {
    addAll([
      _logo = TextComponent(
        text: 'Your Game',
        textRenderer: TextPaint(
          style: const TextStyle(
            fontSize: 64,
            color: Color(0xFFC8FFF5),
            fontWeight: FontWeight.w800,
          ),
        ),
        anchor: Anchor.center,
      ),
      _button1 = RoundedButton(
        text: 'Level 1',
        action: () => game.router.pushNamed('level1'),  👈👈👈
        color: const Color(0xffadde6c),
        borderColor: const Color(0xffedffab),
      ),
...

暂停页面

class PausePage extends Component
    with TapCallbacks, HasGameReference<RouterGame> { 👈👈👈
  @override
  Future<void> onLoad() async {
    final game = findGame()!; 👈👈👈
    addAll([
...
flutter dart flame
1个回答
0
投票

HasGameReference
mixin 只是
findGame
的缓存版本,使用起来稍微方便一些,因为它在组件中公开了
game
变量,但您可以使用任何您想要的。

© www.soinside.com 2019 - 2024. All rights reserved.