2012-04-18 3 views
1

私のプロジェクトの "assets"フォルダに埋め込んだ画像をFile.applicationStorageDirectoryの場所にコピーする必要がありますが、 Fileオブジェクトインスタンスで埋め込みファイルにアクセスする方法がわかりません)...埋め込みファイルを "assets"からFile.applicationStorageDirectoryにコピー

何か提案がありますか?

+0

埋め込みファイルはByteArrayとしてシリアル化されているため、[FileStream.writeBytes()](http://help.adobe.com/jp/FlashPlatform/reference/actionscript/3/flash /filesystem/FileStream.html#writeBytes())を使用してファイルに書き込みます。 – RIAstar

+0

ありがとうございます。そのために、埋め込みファイルを参照するFileオブジェクトを作成する必要がありますが、どうすればできますか? 'new File(" ??? ")' – jroy

+0

新しい空のファイルを作成し、そのファイルに書き込むためにFileStreamを使用するだけです。グーグルの「AIR write file」では、トピックに関する関連する結果が得られるはずです。 – RIAstar

答えて

0

コメントに示唆しているように、組み込みアセットはデフォルトでByteArrayにシリアル化されていません。たとえば、イメージはBitmapAssetクラスにシリアル化されます。

あなたが行うことができ、この埋め込みのために
[Embed(source="sourceImg.png")] 
private var MyImage:Class; 

var bmp:BitmapAsset = new MyImage(); 

のByteArrayにそのによってBitmapAssetを変換する技術があるが、もっと簡単な方法もあります:あなたは「octetstream」にタイプを設定している場合embedディレクティブは、すぐにByteArrayAssetクラスのサブクラスであるByteArrayAssetクラスにシリアル化されます。だから、あなたが行うことができます:

[Embed(source="sourceImg.png", mimeType="application/octet-stream")] 
private var MyImage:Class; 

var bytes:ByteArray = new MyImage(); 

をあなたがする必要があるすべては、ByteArrayのディスクにのFileStreamを使用していることを記述している:

var file:File = File.desktopDirectory.resolvePath('targetImage.png'); 
var fs:FileStream = new FileStream(); 
fs.open(file, FileMode.WRITE); 
fs.writeBytes(bytes); 
fs.close(); 

そして、それはそれで全部です。

+0

完璧!それはまさに私が探していたものです、ありがとう! – jroy