首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将生成的图像对象放入Flame.Images资产缓存中

将生成的图像对象放入Flame.Images资产缓存中
EN

Stack Overflow用户
提问于 2021-12-09 00:12:47
回答 1查看 387关注 0票数 0

将生成的映像放入Flame.Images资产缓存的最有效方法是什么?

我可以从这个方法中获取图像,但是我不知道如何将结果的Image对象放入缓存中。

代码语言:javascript
复制
Future<Image> decodeImageFromPixels(
    Uint8List pixels,
    int width,
    int height, {
    bool runAsWeb = kIsWeb,
  })
EN

回答 1

Stack Overflow用户

发布于 2021-12-12 12:38:06

这目前无法工作,因为图像缓存只对文件起作用。但是您可以很容易地在您的游戏类中创建一个图像缓存(只是一个映射),或者作为一个静态映射,或者可以通过具有HasGameRef<YourGameClass混音的组件访问。

看起来是这样的:

代码语言:javascript
复制
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 ):

代码语言:javascript
复制
class MyComponent extends Component with HasGameRef<MyGame> {
  @override
  Future<void> onLoad() async {
    await super.onLoad();
    sprite = Sprite(gameRef.generatedImages['image name']);
  }
}

或者,如果您没有扩展组件,但仍然使用SpriteComponent,那么您可以在任何您想要的地方(可以访问gameRef的组件)执行此操作:

代码语言:javascript
复制
final spriteComponent = SpriteComponent.fromImage(gameRef.generatedImages['image name']);

注意,您还可以使generatedImages映射是静态的,只需使用MyGame.generatedImages['image name'];访问它,而无需使用gameRef

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70283252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档