3

我有一个带有一堆外部声音到 SWF 的项目。我想播放它们,但是每当我尝试将新 URL 加载到声音对象中时,它都会失败,

错误 #2068:无效的声音

或引发 ioError

错误 #2032 流错误

// 尝试使用前缀为“http://..”“file://..”“//..”和“..”的路径)

var path:String = "http://../assets/the_song.mp3";

var url:URLRequest = new URLRequest( path );

var sound:Sound = new Sound();

sound.addEventListener( IOErrorEvent.IO_ERROR, ioErrorHandler);

sound.addEventListener( SecurityErrorEvent.SECURITY_ERROR, secHandler);

sound.load(url);
4

4 回答 4

2

除非您要输入完整的 url,否则不要使用 http:// 或 file://

声音可以从完整或相对 url 加载 mp3 文件。您只需要确保您的网址正确且有效。

例如,如果文件的完整路径是http://www.something.com/assets/the_song.mp3,那么“/assets/the_song.mp3”的路径就可以了。

于 2008-09-20T16:44:48.987 回答
2

好吧,我刚刚通过将 mp3 放在一个目录中进行了测试:soundTest/assets/song.mp3 然后在另一个目录中创建一个调用 mp3 的 swf:soundTest/swfs/soundTest.swf当我使用它时var path:String = "../assets/song.mp3";,它编译没有错误。

您的实际目录结构是什么?

于 2008-09-21T16:38:13.330 回答
2

你真的应该为 FireFox 下载 httpfox。此 SNIFFER 允许您查看哪些数据正在流经浏览器。你可以看到它加载的文件,包括每个文件的路径,你甚至可以嗅探 POST 和 GET 变量。这将向您显示文件是从哪里提取的,并据此您可以相应地修复您的相对路径。

https://addons.mozilla.org/en-US/firefox/addon/6647

重要的:

从 SWF 调用的所有外部资源都与加载到 Web 时加载它们的 html 文件相关,而不是 SWF。唯一的例外,这是从 AS3 开始的,FLV 与 SWF 相关,而不是像其他所有资源一样加载 SWF 的 HTML 文档。这就是为什么 SNIFFERS 是一个重要工具的原因,我挠了挠头,直到我注意到嗅探器中的 URL 调用了一个奇怪的路径。

以下是如何加载声音。

var soundRequest:URLRequest = "path/to/file.mp3";
var s:Sound = new Sound(soundRequest);
var sChannel = s.play(0, int.MAX_VALUE); //Causes it to repeat by the highest possible number to flash.
//Above starts the sound immediatly (Streaming);

//Now to wait for completion instead, pretend we didnt start it before. s.addEventLister(Event.SOUND_COMPLETE, onSComplete, false, 0, true); function onSComplete(e:Event):void { var sChannel = s.play(0, int.MAX_VALUE); //Causes it to repeat by the highest possible }

于 2008-09-26T10:07:52.197 回答
0

在 RTMP 和 HTTP 两种协议中,路径都应该是 -- "path/to/mp3:file.mp3" 或 "path/to/mp3:file"。我能记住。请检查两者。

于 2008-11-09T07:00:13.540 回答