将生成的映像放入Flame.Images资产缓存的最有效方法是什么?
我可以从这个方法中获取图像,但是我不知道如何将结果的Image对象放入缓存中。
Future<Image> decodeImageFromPixels(
Uint8List pixels,
int width,
int height, {
bool runAsWeb = kIsWeb,
})发布于 2021-12-12 12:38:06
这目前无法工作,因为图像缓存只对文件起作用。但是您可以很容易地在您的游戏类中创建一个图像缓存(只是一个映射),或者作为一个静态映射,或者可以通过具有HasGameRef<YourGameClass混音的组件访问。
看起来是这样的:
class MyGame extends FlameGame {
final generatedImages = <String, Image>{};
@override
Future<void> onLoad() async {
await super.onLoad();
final image = await Flame.images.decodeImageFromPixels(...);
generatedImages['image name'] = image;
}
}然后,在要使用映像的组件类中(例如,如果它是SpriteComponent ):
class MyComponent extends Component with HasGameRef<MyGame> {
@override
Future<void> onLoad() async {
await super.onLoad();
sprite = Sprite(gameRef.generatedImages['image name']);
}
}或者,如果您没有扩展组件,但仍然使用SpriteComponent,那么您可以在任何您想要的地方(可以访问gameRef的组件)执行此操作:
final spriteComponent = SpriteComponent.fromImage(gameRef.generatedImages['image name']);注意,您还可以使generatedImages映射是静态的,只需使用MyGame.generatedImages['image name'];访问它,而无需使用gameRef。
https://stackoverflow.com/questions/70283252
复制相似问题