问题标签 [flame]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - 如何用画布替换 Flutter 小部件,反之亦然?
我正在使用Flutter Flame制作 2D 游戏。该库使用画布,如下所示:
值得注意的是,Flutter Flame 使用了一个 custom BindingBase
,类似于 Widgets 的工作方式。
这对游戏很有用,但我希望在主菜单、设置页面等上使用真正的颤振小部件。
有没有办法在这两个上下文之间交换?
为了提供我正在寻找的东西的想法,我希望存在这两个功能:
flutter - 寻找 Flutter 的 .toImage() 方法的同步替代方案
目前我正在试验 Flutter 和 Flame 游戏引擎。为此,我扩展了 Flame 的 BaseGame 类,并在其构造函数中进行了一些繁重的处理。繁重的处理包括从其他图像中合成图像并最终将其绘制到临时 Canvas 上,并将结果存储在 Picture 对象中。
为了最终获得一个 Image 对象,我需要调用返回 Future 的异步.toData()方法。我将调用包装在异步方法 getImage()
(背景是一个 Image 类型的类变量,在 BaseGame 类的 render() 方法中使用)
问题是,因为它是异步的,所以我在游戏构造函数中的其余语句都会被执行,并且在它完成后,render() 方法会触发,但背景可能还不可用。为了解决这个问题,我添加了一个 bool 类型的类变量done,它在 getImage() 方法中设置为 true。现在我修改了 render() 以等待 done 为真。
当然,这并不优雅。有没有办法在扩展 BaseGame 类的构造函数中等待 .toImage() 方法完成?我尝试使构造函数异步,例如:
但这给了我错误:
修饰符“异步”不能应用于构造函数的主体
我还能尝试使其“同步”吗?
flutter - 颤振:断点调试期间的 NoSuchMethodError
我目前正在玩基于 Flutter 的小型 2D 游戏引擎Flame 。我的代码包含一个相当奇怪的 Heisenbug:如果您通过run
or启动它,它工作正常debug
。但是如果你设置一个断点,它会抛出一个错误
虽然我不认为这与火焰有关,但我无法单独重现颤振的问题。所以我包含了我的基于火焰的代码的最小版本。它只是用灰色背景颜色绘制电话屏幕:
主要飞镖:
游戏飞镖:
如果你想运行它,你还必须在你的 pubspec 中添加火焰:
每次我在的渲染方法中设置断点MyGame
并开始调试时,都会发生我的错误。
flutter - 如何同时实现拖动和点击
我正在用 Flame 制作一个颤动游戏,但我在实现控制器时遇到了问题。控制器基本上是一个操纵杆和一个按钮攻击。对于操纵杆,我需要 panStart、panUpdate 和 panEnd 手势,对于攻击按钮 onTapUp 和 onTapDown。但我不能同时做两个,一次只能做一个手势
flutter - 我无法在 Dart 中将父类转换为其子类
我正在使用 Flame 在 Flutter 中构建 2D 游戏,但我遇到了 CAST 问题。
以下是异常的详细信息。
那么,我应该怎么做才能返回 BarrierRect 类?
flutter - 如何检测带有颤动/火焰的游戏中的滑动
我想创造一个充满火焰的游戏。对于这个游戏,我想检测滑动。
我可以在教程的帮助下实现点击识别。但是我无法通过滑动检测来实现它。
我使用 Taprecognition 的主要功能如下所示: 我的主要功能是
在我的 GameManager 课程中,我确实有:
我的播放器类包含:
现在我想将其更改为沿滑动方向而不是 onTapDown 旋转。我试图以某种方式添加
对我的主要和
到我的gameManager类。但我找不到任何类似于 TapDownDetails 的平移。
对此有何建议?
我看到了一些帮助,将小部件包装在 GestureDetector 中并像这样使用它:
但我无法让它在我的项目中发挥作用。
flutter - 使用火焰/音频播放器时,如何停止来自 AudioCache 的音频?
用于AudioCache
播放本地资源时,它有一个播放方法:
但是没有停止方法。我怎样才能阻止它?
flutter - 使用 Flame 定位 SpriteComponent
更新:我创建了一个较小的示例,可能更好地说明了这个问题中的问题:https ://github.com/flame-engine/flame/issues/200
简洁版本:
我SpriteComponents
在位置实例化(50, 50), (50, 100), (100, 50), (100, 100).
是什么产生了这种奇怪的偏移量?如何正确渲染SpriteComponents
?
更长的版本(带代码):
我想通过实现类似bunnymark的东西来测试火焰的性能。作为节省性能的第一次尝试,我正在加载单个Sprite
并使用它来生成许多SpriteComponents
.
被SpriteComponent
包裹在一个Bunny
类中。现在它什么都不做,最终它会处理运动:
兔子在我的游戏类中被实例化:
游戏从 main.dart 开始:
android-studio - Flutter:在 null 上调用了更新
我正在尝试用颤振的图书馆火焰制作游戏。但我每次都收到这个错误。据说更新是在 null 上调用的。但是我已经在初始化函数中进行了初始化。我尝试了几种方法,但似乎没有任何效果。请帮我修复错误。
我的错误:
I/flutter (20131): ══╡ 调度程序库发现异常╞═════════════════════════␐════════════ ═══════════════════════ I/flutter(20131):在调度程序回调期间引发以下 NoSuchMethodError:I/flutter(20131):方法' update' 在 null 上被调用。I/flutter (20131): Receiver: null I/flutter (20131): 尝试调用: update(0.0) I/flutter (20131): I/flutter (20131): 当异常被抛出时,这是堆栈:I /颤动(20131):#0
Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5) I/flutter (20131): #1 GameController.update (package:small_game/gameController.dart:69:17) I/flutter (20131): #2 GameRenderBox._update (package:flame/game.dart:360:10) I/flutter (20131): #3 GameRenderBox._tick (package:flame/game.dart:353:5) I/flutter (20131): #4 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1033:15) I/flutter (20131): #5 SchedulerBinding.handleBeginFrame。(package:flutter/src/scheduler/binding.dart:951:11) I/flutter (20131): #6 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8) I/flutter (20131) : #7 SchedulerBinding.handleBeginFrame (package:flutter/src/scheduler/binding.dart:949:17) I/flutter (20131): #8 SchedulerBinding.scheduleWarmUpFrame。(package:flutter/src/scheduler/binding.dart:780:7) I/flutter (20131): #17 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19) I/flutter (20131) : #18 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5) I/flutter (20131): #19 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12) I/ flutter (20131): (从包 dart:async 和包 dart:async-patch 中省略了 8 帧) I/flutter (20131): I/flutter (20131): I/flutter (20131): 在上下文中抛出了这个异常调度程序回调。当调度程序回调是 19) I/flutter (20131): #18 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5) I/flutter (20131): #19 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch. dart:172:12) I/flutter (20131): (从包 dart:async 和包 dart:async-patch 中省略了 8 帧) I/flutter (20131): I/flutter (20131): I/flutter (20131) :此异常是在调度程序回调的上下文中引发的。当调度程序回调是 19) I/flutter (20131): #18 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5) I/flutter (20131): #19 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch. dart:172:12) I/flutter (20131): (从包 dart:async 和包 dart:async-patch 中省略了 8 帧) I/flutter (20131): I/flutter (20131): I/flutter (20131) :此异常是在调度程序回调的上下文中引发的。当调度程序回调是 I/flutter (20131):此异常是在调度程序回调的上下文中引发的。当调度程序回调是 I/flutter (20131):此异常是在调度程序回调的上下文中引发的。当调度程序回调是挂号的(与抛出异常时相反),这是堆栈:I/flutter (20131): #0 new _FrameCallbackEntry。(package:flutter/src/scheduler/binding.dart:112:33) I/flutter (20131): #1 new _FrameCallbackEntry (package:flutter/src/scheduler/binding.dart:115:6) I/flutter (20131 ): #2 SchedulerBinding.scheduleFrameCallback (package:flutter/src/scheduler/binding.dart:459:49) I/flutter (20131): #3 GameRenderBox._scheduleTick (package:flame/game.dart:341:50) I /flutter (20131): #4 GameRenderBox.attach (package:flame/game.dart:328:5) I/flutter (20131): #5 RenderObjectWithChildMixin.attach (package:flutter/src/rendering/object.dart:2886 :14) I/flutter (20131): #6 AbstractNode.adoptChild (package:flutter/src/foundation/node.dart:132:13) I/flutter (20131): 5) I/flutter (20131):#22 RenderObjectToWidgetAdapter.attachToRenderTree。(package:flutter/src/widgets/binding.dart:915:17) I/flutter (20131): #23 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2328:19) I/flutter ( 20131): #24 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:914:13) I/flutter (20131): #25 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart: 795:7) I/flutter (20131): #26 runApp (package:flutter/src/widgets/binding.dart:845:7) I/flutter (20131): #27 main (package:small_game/main.dart: 17:3)I/flutter(20131):(从包 dart:async 和包 dart:async-patch 中删除了 14 帧)