lanterngamescnandClaude Opus 4.8 a104394076 修复 H5 音效完全不出声 + 子游戏音效路径错(srcIsloop)
真机诊断([SFX-DIAG])锁定两因:
1. AVPlayer.url 不接受 file:// 本地路径,报 `401 ... not fd:// or network
   address`——所有本地音效播放失败,故"完全没声"。改用 fdSrc(openSync 取 fd),
   远程语音(mediaTypeAudio)仍走 url(网络地址可直接用)。
2. 子游戏音效路径写死 local.gamestart(=gamehall),而 sangelaok 等子游戏音效在
   各自目录(.../sangelaok/assets/wav/),找不到文件 → 子游戏更是无声。对齐 Android
   webviewActivity(gamestart)/NewwebviewActivity(gamedirectory):按"本槽内容目录"
   定位,经 CapabilityContext.gameContentDir 注入(大厅=gamestart、子游戏=其目录)。

并发模型重写(复刻 Android SoundPool 并发一次性 + MediaPlayer-per-src 循环):
- 原单 AVPlayer 每次 release 再建,互相打断、还杀正在循环的 BGM。
- 改为:循环 BGM 每 src 一个播放器(loopPlayers map);一次性音效各自独立瞬时
  播放器(oneShots,播完自释),互不打断。isloop<0 停止该 src 循环。
- fd 生命周期:随播放器释放(release 后)关闭,防泄漏;mute(voicePlaying)作用于全部播放器。

链路改动:CapabilityContext 增 gameContentDir;WebSlot.setup 透传;
BridgeGameContainer setupLobby 传 gamestart、switchGame 记录子游戏目录供 setupSubgame 传入。

真机验证:大厅(dir=gamehall)与子游戏(dir=sangelaok)音效均 exists=true、无 401,
循环 BGM 与一次性音效正常播放。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 09:55:43 +08:00
2026-06-25 06:25:30 +08:00
2026-06-27 01:48:08 +08:00
2026-06-25 06:25:30 +08:00
2026-06-25 06:25:30 +08:00
2026-06-25 06:25:30 +08:00
2026-06-25 06:25:30 +08:00
2026-06-25 06:25:30 +08:00
S
Description
No description provided
1.2 MiB
Languages
Shell 37.6%
JavaScript 36.3%
HTML 13.6%
TypeScript 12.5%