2

我不确定这是 FlashDevelop 还是一般的 ActionScript3 问题,但是,我正在尝试找出将声音文件添加到我的 flashdevelop 项目的最佳方法。

例如,我发现如果我将 .mp3 文件放在项目的 bin 文件夹中,我可以使用以下代码行加载/播放它们

var sndreq:URLRequest = new URLRequest("foo.mp3");
var sound:Sound = new Sound();
sound.load(sndreq);
sound.play();

将我所有的声音文件移动到我的项目的 bin 目录似乎有点痛苦(但如果这就是它所需要的,那就这样吧)。当我右键单击我的媒体文件时,我看到有一个“添加到库”选项,但我不确定它的效果是什么(我希望这意味着它会自动复制到项目的 bin 目录,但是没有这样的运气)。

所以,我的问题是:假设我只有 flashdevelop 而没有 Flash CS3/4,这是加载本地声音文件的推荐方式吗?

4

2 回答 2

4

如上面的帖子所述,您问题的第一部分是一个简单的路径问题。我发现为所有动态加载的资产(xml、图像、声音)等构建文件结构很好。保持 bin 目录干净整洁。

更大的问题是关于在运行时嵌入和加载资产。我不止一次地完成了一个项目,发现我的单个 swf(嵌入了所有资产)已经变得非常大,现在需要很长的前期负载。作为开发人员,这可能会让您的生活更轻松,但对最终用户来说并不是很好。

这些天我最喜欢的做法是只嵌入应用程序初始启动所需的内容,然后尽可能隐藏其余资产的负载。不要让您的用户等着看您的精彩作品!

我实际上使用 flash ide 来打包我作为 swfs 发布的资产集(尽管您可以通过 FD 嵌入来完成同样的事情)。我在运行时定位这些 swf,并从应用程序域中提取类。我主要构建微型站点,并且我倾向于将部分内容(“页面”)分解为可加载的 swf。一旦目标 swf 加载完毕,页面就可用于导航。

另一种方法是使用 BulkLoader 之类的东西,或者更好的是 Greensock 的 LoaderMax(具有一些出色的队列功能)来加载单个资产。

希望有帮助。干杯!

于 2011-03-12T00:02:51.177 回答
2

如果您只使用 FlashDevelop,您有两个选择。您可以在编译时嵌入资源,因此它们被打包,使用 [embed ...] 语句。

http://www.bit-101.com/blog/?p=853

另请注意,在 FlashDevelop 中,您实际上可以右键单击资源,然后单击“插入文档”,这将自动为您写入嵌入行。

或者,您可以在运行时加载资源。所以像现在这样使用 URLRequest 方法。但您不限于 bin 目录。你可以:

new URLRequest("../../../../../foo.mp3");
// or
new URLRequest("www.stackoverflow.com/fakeresources/foo.mp3");

无论您是否动态加载,都需要一个路径。

总体而言,如果您不需要动态,请嵌入资源。

于 2011-03-09T08:16:36.830 回答