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