我想知道如何处理通过fileReference.browse()方法加载到flash的mp3?
目前我已经创建了一个睫毛应用程序,可以将mp3文件从本地硬盘驱动器加载到闪存,并提供一个选项来保存加载回硬盘驱动器的mp3文件。 但我找不到使用已加载的mp3的方法。 我听说过Aviary会提供基于Flash的编辑器。(http://aviary.com/blog/posts/aviary-acquires-digimix), 所以有一种方法可以在flash中使用mp3,但是怎么样?
这是我的代码:
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.utils.ByteArray;
import flash.display.MovieClip;
import flash.net.*;
import flash.events.*;
import flash.media.Sound;
import flash.media.SoundChannel;
var fileReference:FileReference;
var myChannel:SoundChannel;
var mySound:Sound;
var mySprite:Sprite;
var mySprite2:Sprite;
mySound=new Sound();
myChannel=new SoundChannel();
load_btn.addEventListener (MouseEvent.CLICK, onLoadClick);
unload_btn.addEventListener (MouseEvent.CLICK, onUnloadClick);
function onLoadClick ( event:MouseEvent):void
{
fileReference=new FileReference();
var allTypeFilter:FileFilter = new FileFilter("mp3: (*.mp3)","*.mp3");
fileReference.browse([allTypeFilter]);
fileReference.addEventListener(Event.SELECT, selectHandler);
}
function selectHandler(event:Event):void
{
fileReference.removeEventListener(Event.SELECT, selectHandler);
fileReference.addEventListener(Event.COMPLETE, loadCompleteHandler);
fileReference.load();
}
function loadCompleteHandler(event:Event):void
{
fileReference.removeEventListener(Event.COMPLETE, loadCompleteHandler);
var loader:Loader = new Loader();
//loader.contentLoaderInfo.addEventListener(Event.COMPLETE, startPlay);
loader.loadBytes(fileReference.data);
}
function onUnloadClick (event:MouseEvent)
{
trace(fileReference.data);
fileReference.save(fileReference.data, "done.mp3");
}
提前致谢。
答案 0 :(得分:0)
这很奇怪。出于某种原因,没有任何API可以从FileReference或ByteArray创建声音对象,因此您必须解析(而不是解码)MP3并创建可以通过flash.display.Loader.loadBytes加载的SWF。
查看blog post以获取详细信息,并查看库以执行此操作。加载Sound对象后,可以使用extract()方法获取可在编辑器中使用的PCM音频数据。
要从已编辑的PCM生成MP3,看起来有一些Flash mp3 encoders,但我没有使用任何。