Harmony SoundPool 的初始化 加载资源 播放

typescript 复制代码
private player?: media.SoundPool;

async initAndLoad() {
  await this.initSoundPool();
  await this.loadSounds();
  this.ready = true;
}

async release() {
  await this.player?.release();
  this.ready = false;
}

async initSoundPool() {
  this.player = await media.createSoundPool(1, {
    usage: audio.StreamUsage.STREAM_USAGE_GAME,
    rendererFlags: 1
  },)
}

async loadSounds() {
  this.soundIds = [];
  for (let i = 0; i < this.audioOptions.length; i++) {
    let audio: AudioOption = this.audioOptions[i];
    let id = await this.loadSoundId(audio.src);
    this.soundIds.push(id);
  }
}

async loadSoundId(rawFile: string): Promise<number> {
  let res = await getContext().resourceManager.getRawFd(rawFile);
  return new Promise<number>((resolve, reject) => {
    this.player!.load(res.fd, res.offset, res.length, (error, id: number) => {
      if (!error) {
        resolve(id);
      } else {
        reject(error);
      }
    })
  });
}

tick(): void {
  if (!this.ready) {
    return;
  }
  this.player?.play(this.soundIds[this.activeAudioIndex]);
  this.counter++;
}
相关推荐
liulian09165 分钟前
【Flutter for OpenHarmony 第三方库】Flutter for OpenHarmony 第三方社交登录功能适配与实现指南
flutter·华为·学习方法·harmonyos
条tiao条44 分钟前
鸿蒙 ArkTS 实战全解:从基础布局到完整页面,核心组件与样式一篇通
华为·harmonyos
liulian09161 小时前
【Flutter for OpenHarmony第三方库】Flutter for OpenHarmony 骨架屏实现与用户加载体验优化指南
flutter·华为·学习方法·harmonyos
Lanren的编程日记1 小时前
Flutter 鸿蒙应用无障碍功能实战:语义化标签+屏幕阅读器+键盘导航,全方位提升应用可用性
flutter·华为·计算机外设·harmonyos
小白学鸿蒙1 小时前
鸿蒙APP开发:SDK 兼容版本与目标版本如何选择
华为·harmonyos
Hello__77772 小时前
开源鸿蒙 Flutter 实战|关于页面完善全流程实现
flutter·开源·harmonyos
HwJack203 小时前
HarmonyOS APP开发之玩透 ChannelConfig 的声道映射
华为·harmonyos
Lanren的编程日记3 小时前
Flutter 鸿蒙应用列表性能优化实战:虚拟列表+分页加载+渲染优化,实现60fps丝滑滚动
flutter·华为·性能优化·harmonyos
Lanren的编程日记3 小时前
Flutter 鸿蒙应用游戏化元素实战:积分等级+成就解锁+排行榜,全方位提升用户粘性
flutter·游戏·华为·harmonyos
liulian09163 小时前
【Flutter for OpenHarmony 第三方库】Flutter for OpenHarmony 引导页设计与新用户体验优化实现指南
flutter·华为·学习方法·harmonyos·ux