遊戲主循環腳手架

在開頭,咱們知道在一個遊戲應用中,遊戲是在遊戲主循環裏面運行的。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如今咱們的應用程序能夠被稱爲遊戲了,運行遊戲,會顯示一個空白的黑屏,由於咱們尚未在屏幕上繪製具體的內容。

相關文章
相關標籤/搜索