[Adobe Air] 保存ダイアログで拡張子.pngだけ許可したい

June 16, 2009

Adobe Air 保存ダイアログ 拡張子

やりたいこと
PNGEncoderを使って、ユーザーが画像ファイル(.png)を保存できるようにする。
画像ファイルの保存先、ファイル名をユーザーが決められるようにする。

課題
保存ダイアログでユーザーがファイル名を決める際、.png以外の拡張子にしてしまう可能性がある。
browseForOpen()メソッド(ファイル選択ダイアログ)では、選択可能な拡張子をフィルタできるけれど、browseForSave()メソッドにそのようなものはない。

対処
拡張子が未指定、または拡張子.png以外のとき、.pngを末尾につける。強引だけど。

参考URL
Set File Extension with Adobe Air? - kirupaForum

ソース
保存ダイアログを出すには、browseForSave()メソッドを使用。

_file = new File();
_file = File.desktopDirectory;// 保存ダイアログでデスクトップをデフォルトに
_file.browseForSave("ファイル保存");// 保存ダイアログを表示
_file.addEventListener(Event.SELECT,saveHandler);

saveHandlerで出力画像の生成、拡張子のチェック、保存処理。
private function saveHandler(e:Event):void{
// 画像データ生成
var bmp:BitmapData = new BitmapData(_w,_h);
bmp.draw(exportImg);
var bytes:ByteArray = PNGEncoder.encode(bmp);
// 拡張子なし、または.png以外のとき
if(!e.target.extension || e.target.extension != "png"){
e.target.nativePath += ".png";// 拡張子.png追加
}
// 保存処理
_stream = new FileStream();
_stream.open(_file, FileMode.WRITE);
_stream.writeBytes(bytes,0,bytes.length);
_stream.close();
}

この方法だと、ユーザーが.png以外をファイル名にしていたとき、example.txt.pngのようになるので、.png以外の拡張子を消してから追加した方がスマート。
正規表現使えばいいんだろうね。

カテゴリー: 


Posted by scratchbrain at June 16, 2009 11:39 PM ブックマークに追加する

Trackback

Trackback URL for this entry:

Post a Comment


検索

このブログを検索

サイトコンセプト

レディオヘッド、Flash・ActionScript 3.0、Processing、アートに関すること。日記・雑感、読書感想など。
[SCRATCHBRAIN.NET ホーム]
[SCRATCHBRAIN プロフィール]
[お問い合わせ]
[Twitter]

リンク

  • 嫁と更新。レシピ、子育て
  • バルセロナ観光ガイド
  • ポケット・アナリシス
  • 洋楽ブックマーク
  • こんなライヴに行きました

広告

おすすめ

最近のエントリー

カテゴリー

タグクラウド

全てのエントリー一覧

RSSフィード

月別アーカイブ

powered by Movable Type

hosted by

あわせて読みたいブログパーツ