在开头,咱们知道在一个游戏应用中,游戏是在游戏主循环里面运行的。Flame插件已经提供了能够直接使用的游戏主循环脚手架,要使用这个脚手架,就要用到Flame的游戏(Game)抽象类。canvas
建立一个名称为box-game.dart的新文件,而后开始编写BoxGame类,。async
import 'dart:ui';ide
import 'package:flame/game.dart';函数
class BoxGame extends Game {
void render(Canvas canvas) {
// TODO: 实现渲染
}ui
void update(double t) {
// TODO: 实现更新
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
上面的代码中,导入dart:ui库,这样的话,等一下咱们就能够使用画布(Canvas)类和大小(Size)类。而后导入package:flame/game.dart库,这个库里面包括咱们如今使用的游戏(Game)抽象类,这个类有两个方法:更新(update)和渲染(render),咱们直接用同名方法覆盖了它们。插件
在Dart 2.x版本中,@override注释和new关键字是可选的,因此在这里也不须要写。游戏
接下来,咱们在main.dart文件中建立BoxGame类的实例,并将其widget属性传递给runApp函数。同时,引用咱们刚才建立的package:hello_flame/box-game.dart,让BoxGame类能够在main.dart中使用。get
...
import 'package:hello_flame/box-game.dart';it
void main() async {
...
BoxGame game = BoxGame();
runApp(game.widget);
1
2
3
4
5
6
7
到这里为止,咱们的main.dart里面应该有如下代码。io
import 'package:flutter/material.dart';
import 'package:flame/util.dart';
import 'package:flutter/services.dart';
import 'package:hello_flame/box-game.dart';
void main() async {
Util flameUtil = Util();
await flameUtil.fullScreen();
await flameUtil.setOrientation(DeviceOrientation.portraitUp);
BoxGame game = BoxGame(); runApp(game.widget);}123456789101112131415如今咱们的应用程序能够被称为游戏了,运行游戏,会显示一个空白的黑屏,由于咱们尚未在屏幕上绘制具体的内容。