是否可以保存从服务器下载的 mp3 文件而不将其转换为 ByteArray? (AS3)
Is it possible to save a mp3 file downloaded from server without converting it to ByteArray? (AS3)
在网上找了一圈,没找到从服务器下载mp3,保存到本地存储(iPad)然后加载播放的方法,只能转成byteArray,将其保存为 .mp3,然后加载并读回 mp3 以便能够在 flash 应用程序中播放。
问题是,虽然这个方法没问题,但本地存储中保存的未压缩文件(byteArray格式)太重,我怀疑应用程序正在浪费内存。
我的问题是,是否有任何形式可以直接保存 mp3,而不需要任何转换,就像可以正常播放的 mp3 一样?我无法使用 FileReference 中的 download() 或 save() 等方法。
非常感谢!!
解决方案!! (完美运行):
我继续在网上寻找完成此操作的方法,一些论坛为我提供了线索,让我可以在搜索时执行此操作。它最终非常简单,但我花了将近 2 周的时间才找到它...这是我的代码:
var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler});
queue.append( new DataLoader("http://" + **url**, {name:**"example.mp3"**format:"binay"}));
queue.load();
// Complete Event:
private function completeHandler():void {
var file:File = new File(**your location**); // appData
var fr:FileStream = new FileStream();
fr.open(file.resolvePath(nameIn), FileMode.WRITE);
fr.writeObject(LoaderMax.getContent("example.mp3"));
fr.close();
fr = null;
// Now the mp3 is saved in local storage, we load it as Sound object so we can play it.
var loader:MP3Loader;
loader = new MP3Loader(**your location**, {autoPlay:false}) ;
loader.addEventListener(Event.COMPLETE, function():Sound {
loader.content.play(); // This line is the only one not checked, but I am completely sure you can do something like this to play the sound. For example, I introduce the loader.content in a Array of Sound and later I am capable to play any sound I want.
loader.dispose(true); // This is very important to free memory. You should do the same thing with queue when all items are downloaded.
});
loader.load();
}
我希望这对很多人有帮助!!
在网上找了一圈,没找到从服务器下载mp3,保存到本地存储(iPad)然后加载播放的方法,只能转成byteArray,将其保存为 .mp3,然后加载并读回 mp3 以便能够在 flash 应用程序中播放。
问题是,虽然这个方法没问题,但本地存储中保存的未压缩文件(byteArray格式)太重,我怀疑应用程序正在浪费内存。
我的问题是,是否有任何形式可以直接保存 mp3,而不需要任何转换,就像可以正常播放的 mp3 一样?我无法使用 FileReference 中的 download() 或 save() 等方法。
非常感谢!!
解决方案!! (完美运行):
我继续在网上寻找完成此操作的方法,一些论坛为我提供了线索,让我可以在搜索时执行此操作。它最终非常简单,但我花了将近 2 周的时间才找到它...这是我的代码:
var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler});
queue.append( new DataLoader("http://" + **url**, {name:**"example.mp3"**format:"binay"}));
queue.load();
// Complete Event:
private function completeHandler():void {
var file:File = new File(**your location**); // appData
var fr:FileStream = new FileStream();
fr.open(file.resolvePath(nameIn), FileMode.WRITE);
fr.writeObject(LoaderMax.getContent("example.mp3"));
fr.close();
fr = null;
// Now the mp3 is saved in local storage, we load it as Sound object so we can play it.
var loader:MP3Loader;
loader = new MP3Loader(**your location**, {autoPlay:false}) ;
loader.addEventListener(Event.COMPLETE, function():Sound {
loader.content.play(); // This line is the only one not checked, but I am completely sure you can do something like this to play the sound. For example, I introduce the loader.content in a Array of Sound and later I am capable to play any sound I want.
loader.dispose(true); // This is very important to free memory. You should do the same thing with queue when all items are downloaded.
});
loader.load();
}
我希望这对很多人有帮助!!