简易音乐播放器报错求助:Unhandled IOErrorEvent与Stream Error
错误修复方案
核心问题分析
你遇到的#2044: Unhandled IOErrorEvent和#2032: Stream Error主要来自三个问题:
- 路径拼接错误:没有正确关联数组里的音乐文件名,也缺少音频文件后缀
- 未捕获IO错误:没有给Sound对象添加错误事件监听器,导致异常未处理
- 本地安全限制:直接使用绝对路径可能触发Flash的本地文件访问限制
修复后的代码
var myMusic:Sound = new Sound(); var musicChannel: SoundChannel = new SoundChannel(); var musicIndex: Number = 0; var music: Array = new Array(); var pp: Boolean = true; // 确保数组内的文件名和实际文件完全匹配,建议显式加上.mp3后缀 music = ['Aqua Man- Guitar Remix.mp3', 'Summer Treasure Hunt Event 1.mp3', 'Summer Treasure Hunt Event 2.mp3', 'Sizzling Heat! Splendid Summer Event.mp3', 'Brick Dive.mp3', 'Bloocheep Ocean.mp3','Dire Dire Docks Remix - Calm Waters.mp3', 'Dire Dire Docks Remix - Calm Waters.mp3', 'Mario Teaches Typing 2 (1996) - Underwater.mp3', 'Treasure Cove! Level 1.mp3', 'Treasure Cove! Level 2.mp3', 'Treasure Cove! Level 3.mp3', 'Under Pressure.mp3']; // 1. 修复路径:路径末尾加斜杠,调用数组对应索引的文件名 // 2. 添加错误监听器捕获加载异常 myMusic.addEventListener(IOErrorEvent.IO_ERROR, onMusicLoadError); myMusic.load(new URLRequest("E:/Flash Animations/Folder 1/Games/Bit-Bot Math Voyage/Music/" + music[musicIndex])); // 错误处理函数 function onMusicLoadError(e:IOErrorEvent):void { trace("音乐加载失败:" + e.text); // 可在此添加重试逻辑或切换下一首的代码 }
额外优化建议
- 若不想修改数组文件名,确认Music文件夹内的音频文件名称(包括后缀)和数组元素完全一致
- 本地测试遇到安全报错时,打开Flash Player设置管理器,将你的音乐文件夹添加到本地信任目录
- 切换歌曲时,记得先停止当前播放的音频并移除旧的监听器,避免内存泄漏
内容的提问来源于stack exchange,提问作者Isaac Yeap Jie Ling
相关产品推荐
相关产品推荐

