我有一堆的外部声音到SWF的项目。 我想打他们,但任何时候,我尝试一个新的URL装入它失败或者声音对象,
错误#2068:无效的声音
或引发与一个IOError
错误#2032流错误
//试图与路径前缀的 “http:// ..” “文件:// ..” “// ..” 和 “..”)
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);
:嗯,我只是投入目录中的MP3做了测试soundTest/assets/song.mp3
再创造,在其他目录调用MP3的SWF: soundTest/swfs/soundTest.swf
,当我使用var path:String = "../assets/song.mp3";
然后将其与没有错误编译。
什么是您的实际目录结构?
除非你打算把一个完整的URL,不要使用http://或file://
声音可以从一个完整或相对URL加载一个mp3文件。 你只需要确保您的网址是正确的,有效的。
例如,如果该文件的完整路径是http://www.something.com/assets/the_song.mp3的“/assets/the_song.mp3”的路径是可行的。
你真的应该下载的HttpFox为Firefox浏览器。 这SNIFFER允许您查看数据流过browswer什么。 你可以看到文件它的加载,包括路径每次,你甚至可以嗅出POST和GET变量。 这将显示您在文件正在从拉和基于关闭的,你可以相应解决您的相对路径。
https://addons.mozilla.org/en-US/firefox/addon/6647
重要:
所有从SWF称为外部资产是相对于HTML文件的网页,而不是SWF在加载时加载它们。 唯一的例外,这是与AS3开始的东西,FLV的是相对于SWF,而非HTML文档加载像所有其他资产的SWF。 这就是为什么嗅探器是一个重要的工具,我划我的头一段时间,直到我发现在嗅探器的网址在呼唤一个奇怪的路径。
下面是你可以加载声音。
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);
//现在等待完成,而不是假装我们没有之前启动它。 s.addEventLister(Event.SOUND_COMPLETE, onSComplete, false, 0, true);
功能onSComplete(E:事件):无效{风险SCHANNEL = s.play(0,int.MAX_VALUE的); //使其在尽可能高的重复}
在这两种协议,RTMP&HTTP,路径应该是 - “路径/到/ MP3:file.mp3” 或 “路径/到/ MP3:文件”。 我能记住。 请检查两种。
文章来源: How to play a sound in Actionscript 3 that is not in the same directory as the SWF?