zoukankan      html  css  js  c++  java
  • 游戏主循环脚手架

    在开头,我们知道在一个游戏应用中,游戏是在游戏主循环里面运行的。Flame插件已经提供了可以直接使用的游戏主循环脚手架,要使用这个脚手架,就要用到Flame的游戏(Game)抽象类。

    创建一个名称为box-game.dart的新文件,然后开始编写BoxGame类,。

    import 'dart:ui';

    import 'package:flame/game.dart';

    class BoxGame extends Game {
    void render(Canvas canvas) {
    // TODO: 实现渲染
    }

    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中使用。

    ...
    import 'package:hello_flame/box-game.dart';

    void main() async {
    ...
    BoxGame game = BoxGame();
    runApp(game.widget);
    1
    2
    3
    4
    5
    6
    7
    到这里为止,我们的main.dart里面应该有以下代码。

    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);
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    现在我们的应用程序可以被称为游戏了,运行游戏,会显示一个空白的黑屏,因为我们还没有在屏幕上绘制具体的内容。

  • 相关阅读:
    观《逻辑思维,如何成为一个高手》
    第十八周 最后冲刺
    第十六周 个人项目开发流程
    个人作业
    第十四周个人总结
    排球比赛计分程序功能说明书
    Spring实战(1)
    java基础知识(三)
    JAVA中框架总结
    java基础知识(一)
  • 原文地址:https://www.cnblogs.com/ly570/p/11488499.html
Copyright © 2011-2022 走看看