【发布时间】:2021-01-01 16:19:03
【问题描述】:
只是寻找一些建议,希望有人能指出我正确的方向。
我正在尝试创建一个可以播放存储在 DropBox 上的音乐的 Flash MP3 播放器。以前从未使用过 ActionScript,所以我在学习过程中...
从我目前阅读的内容来看,我需要使用 URLRequest 来获取指向 mp3 文件的链接,然后使用 Sound 对象来加载文件并播放它。但是,当我测试我的 SWF 文件时,我没有收到音频。我也一直在阅读有关 URLSream 和 NETstream 的内容,但不确定如何将其与 Sound 对象一起使用。我不能 100% 确定我是否正确使用了 Sound,而且鉴于现在这是相当古老的技术,我很难找到合适的教程。
这是我一直在尝试的代码:
package {
//Dependencies
import flash.display.MovieClip;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
import flash.net.URLStream;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.media.*;
//Class code
public class soundObject extends MovieClip {
//Variables
var mySong:Sound = new Sound();
//Init Code here
public function soundObject() {
var myRequest:URLRequest = new URLRequest("https://www.dropbox.com/s/[dropboxurl]/T-U-R-T-L-E%20POWER.mp3?dl=0")
mySong.load(myRequest);
mySong.addEventListener(Event.COMPLETE, onSoundLoad);
}
private function onSoundLoad(e:Event): void
{
mySong.play();
}
}
}
【问题讨论】:
-
脚本看起来不错,如果您尝试从其他文件(特别是 SWF)所在的同一位置加载音频文件,它很可能会工作。所以,有两个可能的问题。 1.跨域问题。 Flash 有一套严格的规则体系,它可以从 iternet 获得什么,什么不能获得(一旦获得就可以访问)。 2.更可能的是,DropBox下载链接并没有直接返回MP3文件数据,而是某种代理HTML页面开始下载,这很有意义对于浏览器,但对于 Sound 实例来说并没有那么多。
-
我确实将文件放在了本地,并且运行良好。我知道该链接有效,因为我正在尝试重新创建另一个我见过的 Flash 播放器。该播放器必须在播放前下载 mp3 并对其进行缓存,因此需要弄清楚诀窍。
-
好吧,如果该请求产生实际的 MP3 数据或 HTML 页面。
-
Dropbox 共享链接 URL 默认不直接返回文件数据;它指向一个 HTML 预览页面。您可以修改它以直接访问文件内容,如下所述:help.dropbox.com/files-folders/share/force-download
-
@Organis。我还没有研究过 URLLoader。我会检查一下。谢谢。
标签: actionscript-3 flash actionscript dropbox flash-cs6