如何发挥ActionScript 3的声音,是不是在同一个目录中的SWF?(How to play

2019-09-17 15:54发布

我有一堆的外部声音到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);

Answer 1:

:嗯,我只是投入目录中的MP3做了测试soundTest/assets/song.mp3再创造,在其他目录调用MP3的SWF: soundTest/swfs/soundTest.swf ,当我使用var path:String = "../assets/song.mp3"; 然后将其与没有错误编译。

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



Answer 2:

除非你打算把一个完整的URL,不要使用http://或file://

声音可以从一个完整或相对URL加载一个mp3文件。 你只需要确保您的网址是正确的,有效的。

例如,如果该文件的完整路径是http://www.something.com/assets/the_song.mp3的“/assets/the_song.mp3”的路径是可行的。



Answer 3:

你真的应该下载的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的); //使其在尽可能高的重复}



Answer 4:

在这两种协议,RTMP&HTTP,路径应该是 - “路径/到/ MP3:file.mp3” 或 “路径/到/ MP3:文件”。 我能记住。 请检查两种。



文章来源: How to play a sound in Actionscript 3 that is not in the same directory as the SWF?