2010-12-19 13 views
0

デスクトップFlashアプリケーション(AS3)を作成しています。ユーザーはプロジェクトを保存して開くことができます。 私は、プロジェクトファイルAdob​​e Flashデスクトップアプリケーションにデータを保存

var fileRef:FileReference = new FileReference(); 
var ourTypes:Array=new Array(new FileFilter("Map Editor type (*.xml)", "*.xml")); 
fileRef.browse(ourTypes); 

を開き、fileRef.dataを使用してファイルの内容を使用するのFileReferenceを使用しました。

var mainXml:XML; 
mainXml=new XML(fileRef.data); 

ユーザーは、このファイルに一部のデータを追加することができます(読み取りのみではありません)。新しいデータを同じファイルに保存するにはどうすればよいですか?

+1

File/FileStreamクラスの方法については、このアーティクルを参照してください。http://www.adobe.com/devnet/air/ajax/quickstart/articles/xml_prefs.html。これはAIRプロジェクト用であり、 AIRを使用して任意のファイルをユーザーのファイルシステムに書き込むことができるためです。 AIRを使用できない場合は、Local SharedObject(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html?filter_flex)を使用することに悩まされています。 = 4.1&filter_flashplayer = 10.1&filter_air = 2#top)。 SharedObjectでは、ファイルサイズにも制限があります。あなたはデフォルトで100Kを得ており、あなたはもっと多くを求めることができます... –

+1

...ユーザーは、より多くのストレージスペースへのアクセスを拒否することができます。あなたのコードはそれがタイルマップXMLかもしれないことを示唆しているので、XMLがかなり速く大きくなると思います。要約すると、クライアントのマシンにxmlを保存する場合は、SharedObjectまたはAIRを使用できます。それ以外の場合は、サーバー側言語(php/asp/jsp/etc)でxmlをサーバーに保存することを検討してください。 ) –

答えて

1

fileRef.save(data:*, defaultFileName:null)でファイルを保存することができます。dataは、保存するデータオブジェクトです(mainXML.toString())。残念ながら、これは常に別のファイルダイアログを開き、セキュリティ上の制限のように思われるため、回避する方法はありません。あなたが行うことができるのはdefaultFileNameなので、ユーザーは手動で入力する必要はありません。

関連する問題