屏幕的大小和尺寸

Flame这个游戏开发框架是以Flutter为基础的,而Flutter在屏幕上绘制时使用逻辑像素,因此,我们在Flame上调整游戏对象的大小时也是使用逻辑像素。

实际上,游戏(Game)抽象类上有个调整(resize)方法,这个方法接受大小(Size)类参数,使用这个参数就可以确定设备的屏幕大小。

首先在box-game.dart文件中,添加一个BoxGame类的实例变量screenSize,这个变量用于保持屏幕的大小,只有当屏幕的大小发生变化时才会更新,它也是Flame在屏幕上绘制对象时的基础。screenSize是Size类型的变量,与传递给调整(resize)方法的参数一致。

类变量screenSize的初始值为null,可以用来判断渲染过程中是否已知屏幕大小。接下来,我们编写一个同名方法覆盖调整(resize)方法。

class BoxGame extends Game {
Size screenSize;

...

void resize(Size size) {
screenSize = size;
super.resize(size);
}
1
2
3
4
5
6
7
8
9
到这里为止,我们的box-game.dart里面应该有以下代码。

import 'dart:ui';

import 'package:flame/game.dart';

class BoxGame extends Game {
Size screenSize;

void render(Canvas canvas) {
// TODO: 实现渲染
}(http://www.amjmh.com/v/)

void update(double t) {
// TODO: 实现更新
}

void resize(Size size) {
screenSize = size;
super.resize(size);
}
}