开屏动画

开屏动画

给你的 Flame 游戏装饰上一个漂亮的开屏动画

FlameSplashScreen 是一个非常可定制的开屏动画包。

FlameSplashScreen(
  theme: FlameSplashTheme.dark,
  onFinish: (BuildContext context) => Navigator.pushNamed(context, '/your-game-initial-screen')
);

安装

pubspec.yaml 文件中添加 flame_splash_screen 依赖。

导入 widget:

import 'package:flame_splash_screen/flame_splash_screen.dart';

使用方法

flame_splash_screen 是一个用来显示初始屏幕部件。

简单用法

这里需要两个必要参数:

  • onFinish, 当初始屏幕的所有动画结束时执行的回调方法。
  • theme, 比如 FlameSplashTheme.darkFlameSplashTheme.white.
FlameSplashScreen(
  theme: FlameSplashTheme.dark,
  onFinish: (BuildContext context) => Navigator.pushNamed(context, '/your-game-initial-screen')
)

添加容器

你可以将自己的logo显示在Flame动画之前或之后。

FlameSplashScreen(
  theme: FlameSplashTheme.dark,
  showBefore: (BuildContext context) {
    return Text("在Flame动画之前显示");
  },
  onFinish: (BuildContext context) => Navigator.pushNamed(context, '/your-game-initial-screen'),
)
FlameSplashScreen(
  theme: FlameSplashTheme.dark,
  showAfter: (BuildContext context) {
    return Text("在Flame动画之后显示");
  },
  onFinish: (BuildContext context) => Navigator.pushNamed(context, '/your-game-initial-screen'),
)

请记住:您还可以同时指定showBefore和showAfter。

变更 theme

默认情况下,初始屏幕是一个黑暗的背景。您可以通过指定白色主题来更改它。

除了 FlameSplashTheme.dark, 你可以通过 FlameSplashTheme.white 设置白色背景

FlameSplashScreen(
  theme: FlameSplashTheme.white,
  onFinish: (BuildContext context) => Navigator.pushNamed(context, '/your-game-initial-screen'),
)

您可以创建自己的主题传递一个自定义徽标生成器(改变为另一个Flame徽标)和背景装饰

控制器中使用

在启动时,利用 FlameSplashController 可以使 FlameSplashScreen 具有自定义动画时长的能力。

这里有时长参数及 autoStart (自动播放,默认为true)

使用控制器动画的方式与widget状态一样:

class SplashScreenGameState extends State<SplashScreenGame> {
  FlameSplashController controller;
  
  void initState() {
      super.initState();
      controller = FlameSplashController(
        fadeInDuration: Duration(seconds: 1),
        fadeOutDuration: Duration(milliseconds: 250),
        waitDuration: Duration(seconds: 2),
        autoStart: false
      );
  }

  
  void dispose() {
    controller.dispose(); // 必要时清除
    super.dispose();
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: FlameSplashScreen(
        showBefore: (BuildContext context) {
          return Text("Before the logo");
        },
        showAfter: (BuildContext context) {
          return Text("After the logo");
       },
       theme: FlameSplashTheme.white,
       onFinish: (context) => Navigator.pushNamed(context, '/the-game-initial-screen'),
        controller: controller,
      ),
    );
  }
}

有关更多详细信息,请查看 package's repopub page

Flame中文站 all right reserved,powered by Gitbook最后修改: 2020-08-23 20:27:25

results matching ""

    No results matching ""