如何编辑通过fileReference.browse()方法加载到flash的mp3文件?

时间:2011-03-03 09:44:07

标签: flash-cs4 flash

我想知道如何处理通过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");

}

提前致谢。

1 个答案:

答案 0 :(得分:0)

这很奇怪。出于某种原因,没有任何API可以从FileReference或ByteArray创建声音对象,因此您必须解析(而不是解码)MP3并创建可以通过flash.display.Loader.loadBytes加载的SWF。

查看blog post以获取详细信息,并查看库以执行此操作。加载Sound对象后,可以使用extract()方法获取可在编辑器中使用的PCM音频数据。

要从已编辑的PCM生成MP3,看起来有一些Flash mp3 encoders,但我没有使用任何。