我创建了常规的Dart实用程序类SoundLibrary,我想制作更多AngularDart' ish。实用程序类可用于加载一些声音文件,然后播放部分文件。
用于获取声音文件的(异步)方法是:
Future<Null> fetchAudioFiles(List<String> audioFiles) { ... }
用于播放其中一个检索到的声音的指定部分的方法是:
playSound(String audioFile, double startTime, double duration) { ... }
一个简单的用例是:
main() {
SoundLibrary sb = new SoundLibrary();
sb.fetchAudioFiles(["explosions.mp3", "engines.mp3"]).then((_){
sb.playSounds("explosions.mp3", 5.34, 2.1);
});
}
我希望AngularDart创建一个&#34;服务实例&#34;这个类,我可以注入其他实例。在AngularDart实际启动我的应用程序之前,我还希望AngularDart 等待以使实例完全就绪(所有声音都已加载)(因为我不希望在播放给定声音时出现延迟文件第一次)。
我如何以AngularDart方式实现这一目标,因此AngularDart PRELOADs声音,而AngularDart本身初始化。类似于:AngularDart初始化时也会调用soundLibrary.fetchAudioFiles(..)。然后等待AngularDart初始化并加载所有声音。初始化完成后,我希望所有已经注入SoundLibrary的控制器可以调用sb.playsound(..)而不用担心,声音尚未完成加载。
答案 0 :(得分:1)
只需将ngBootstrap()
来电置于fetchAudioFiles()
then()
来电:
main() {
SoundLibrary sb = new SoundLibrary();
sb.fetchAudioFiles(["explosions.mp3", "engines.mp3"]).then((_){
ngBootstrap(module : new myModule());
});
}
您还可以尝试使用值注册SoundLibrary:
class myModule extends Module {
value(SoundLibrary, new SoundLibrary()
..fetchAudioFilesSync(["explosions.mp3", "engines.mp3"]));
}
fetchAudioFilesSync是同步操作。
答案 1 :(得分:0)
您只需创建一个类并在模块中注册它
type(SoundLibrary);
将其注入控制器/组件/指令
class MyController {
SoundLibrary _sl;
MyController(this._sl) {
_sl.fetchAudioFiles().then(sb.playSound('explosions.mp3', 5.34, 2.1);
}
}
要详细说明,您需要提供更多信息 在调用方法并等待它返回之前,没有多少AngularDartish。