如何在 Flame 中加载网络图像?

问题描述

在 Flame 文档中,Image 类只是从资产文件夹加载。

bgSprite = Sprite('avatar/avatar-sample.png');

如何在 Flame 中加载网络图像。

解决方法

你可以在 1.0.0-rc4 中做这样的事情:

import dart:ui; // This is the package you want the Image class from,there are several

Future<Image> getImage(String path) async {
  Completer<ImageInfo> completer = Completer();
  var img = new NetworkImage(path);
  img.resolve(ImageConfiguration()).addListener(ImageStreamListener((ImageInfo info,bool _){
    completer.complete(info);
  }));
  ImageInfo imageInfo = await completer.future;
  return imageInfo.image;
}

然后在您的 onLoad 方法中,只需启动 bgSprite:

@override
Future<void> onLoad() async {
  final image = await getImage("your-url.com/sample.png");
  bgSprite = Sprite(image);
}

0.28.0 中,看起来您正在运行,您只需将最后一行替换为(但我真的建议升级到 1.0.0-rc4):

bgSprite = Sprite.fromImage(image);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...