如何使用 Actionscript3 音频发布 SWF?

How to publish SWF with Actionscript3 Audio?

我需要将 AS3 作业发布到博客。我的文件使用四个 mp3 文件保存在与 fla 和 swf 文件相同的目录中。当我 "test movie" 时,它在 Adob​​e Animate CC 中工作正常;但是当我将它发布到我的博客时,听不到任何音乐。我假设这是因为音频文件可以在我的笔记本电脑上访问,但不能在互联网上访问。

有人知道如何解决这个问题吗?

这是我将笔记本电脑上的歌曲附加到我的 fla 文件的代码:

import flash.events.Event; 
import flash.media.Sound; 
import flash.net.URLRequest; 

var v:Sound = new Sound(); 
v.addEventListener(Event.COMPLETE, onSoundLoaded4); 
var req4:URLRequest = new URLRequest("excited.mp3"); 
v.load(req4); 

function onSoundLoaded4(event:Event):void 
{ 
var localSound4:Sound = event.target as Sound; 
localSound4.play(); 
}

您需要在 ftp 上上传您的 mp3 文件。现在的问题是你应该上传到哪里。举个例子

假设您有位于 htdocs/assets/swf/music.swf 的 swf,并且从位于 htdocs/music.html 的 html 加载了一个。在这种情况下,您必须将 mp3 上传到 htdocs 目录中。

一个复杂的示例,其中您的 swf 从目录(例如 mymusic/music.mp3)加载 mp3,在这种情况下,您的 mp3 必须上传到 htdocs/mymusic/music.mp3。

所以所有到 mp​​3 的路径必须相对于 html 文件加载你的 swf,而不是相对于 swf 位置,除非你想直接在浏览器中加载 swf,而不使用 html.

作为替代解决方案,您可以通过将 MP3 声明为 FLA 的资源,将它们嵌入到 SWF 中,为它们分配 class 名称(基本类型将为 Sound),然后创建实例这些 classes 而不是从其他地方加载它们。缺点是您的 SWF 会变得更大。示例(FlashDevelop 语法,演示通过代码嵌入。要嵌入 Adob​​e Flash CS,请使用本机机制):

[Embed(source = '../../lib/intro.mp3')] // relative path from AS to MP3
private static const Intro:Class;
...
var intro:Sound=new Intro();
intro.play();