3

Flutter Flameを使用して 2D ゲームを作成しています。以下に示すように、ライブラリはキャンバスを使用します。

start() {
  var previous = Duration.ZERO;

  window.onBeginFrame = (now) {
    var recorder = new PictureRecorder();
    var canvas = new Canvas(
        recorder,
        new Rect.fromLTWH(
            0.0, 0.0, window.physicalSize.width, window.physicalSize.height));

    Duration delta = now - previous;
    if (previous == Duration.ZERO) {
      delta = Duration.ZERO;
    }
    previous = now;

    var t = delta.inMicroseconds / Duration.MICROSECONDS_PER_SECOND;

    update(t);
    render(canvas);

    var deviceTransform = new Float64List(16)
      ..[0] = window.devicePixelRatio
      ..[5] = window.devicePixelRatio
      ..[10] = 1.0
      ..[15] = 1.0;

    var builder = new SceneBuilder()
      ..pushTransform(deviceTransform)
      ..addPicture(Offset.zero, recorder.endRecording())
      ..pop();

    window.render(builder.build());
    window.scheduleFrame();
  };

  window.scheduleFrame();
}

Flutter Flame はBindingBase、ウィジェットの動作と同様のカスタム を使用することに注意してください。

class _CustomBinder extends BindingBase with ServicesBinding {}

これはゲームではうまく機能しますが、メイン メニューや設定ページなどに実際のフラッター ウィジェットを使用したいと考えていました。

これら 2 つのコンテキストを切り替える方法はありますか?

私が探しているもののアイデアを提供するために、次の2つの関数が存在することを望みます:

loadHomeScreen(); // replaces the canvas, if any, with Flutter widgets
loadCanvasScene(); // replaces the Flutter widgets with the canvas
4

1 に答える 1