▼Adobe AIRメモ▼
ファイルの読み書き
ファイルの読み書きを行うプログラムを作成する。
ソースコード
FileEx.as package { import flash.display.*; import flash.events.*; import flash.filesystem.*; import flash.net.*; import flash.text.*; //ファイルへのデータ保存 public class FileEx extends Sprite { private var textField:TextField; //テキストフィールド private var btnWrite:CustomButton;//書き込みボタン private var btnRead:CustomButton; //読み込みボタン private var file:File; //ファイル //コンストラクタ public function FileEx() { //テキストフィールドの生成 textField =new TextField(); textField.text ="FieldEx"; textField.x =5; textField.y =5; textField.width =230; textField.height =210; textField.background =true; textField.backgroundColor=0xFFFFFF; textField.type =TextFieldType.INPUT; textField.multiline =true; addChild(textField); //書き込みボタンの生成 btnWrite=new CustomButton("書き込み"); btnWrite.x=5; btnWrite.y=220; btnWrite.addEventListener(MouseEvent.CLICK,onWriteClick); addChild(btnWrite); //読み込みボタンの生成 btnRead=new CustomButton("読み込み"); btnRead.x=btnWrite.x+btnWrite.width+5; btnRead.y=220; btnRead.addEventListener(MouseEvent.CLICK,onReadClick); addChild(btnRead); } //書き込みクリックイベントの処理 private function onWriteClick(evt:MouseEvent):void { file=File.desktopDirectory; file.addEventListener(Event.SELECT,onWriteSelect); file.browseForSave("保存"); } //読み込みクリックイベントの処理 private function onReadClick(evt:MouseEvent):void { file=File.desktopDirectory; file.addEventListener(Event.SELECT,onReadSelect); var filter:FileFilter=new FileFilter("テキスト","*.txt;*.html"); file.browseForOpen("開く",[filter]); } //書き込み選択イベントの処理 private function onWriteSelect(evt:Event):void { try { var fsw:FileStream=new FileStream(); fsw.open(file,FileMode.WRITE); fsw.writeMultiByte(textField.text,"shift_jis"); fsw.close(); } catch (e:Error) { trace(e.toString()); } } //読み込み選択イベントの処理 private function onReadSelect(evt:Event):void { try { var fsr:FileStream=new FileStream(); fsr.open(file,FileMode.READ); textField.text=fsr.readMultiByte(file.size,"shift_jis"); fsr.close(); } catch (e:Error) { trace(e.toString()); } } } }
CustomButton.as package { import flash.display.*; import flash.filters.*; import flash.text.*; //カスタムボタン public class CustomButton extends SimpleButton { //コンストラクタ public function CustomButton(label:String="",fontSize:uint=12) { //位置 this.x=x; this.y=y; //ボタンスプライト var downSprite:Sprite=makeButtonSprite( label,fontSize,0x000000,0xdddddd); var upSprite :Sprite=makeButtonSprite( label,fontSize,0xdddddd,0x000000); var hitSprite :Sprite=makeButtonSprite( label,fontSize,0x000000,0x000000); //状態 downState =downSprite;//ダウン overState =upSprite; //オーバー upState =upSprite; //アップ hitTestState=hitSprite; //当たり判定 //手アイコンを指定 useHandCursor=true; } //ボタンスプライトの生成 private function makeButtonSprite(text:String,fontSize:uint, highlightColor:uint,shadowColor:uint):Sprite { //スプライト var sp:Sprite=new Sprite(); //ラベルの指定 var label:TextField=makeLabel(text,fontSize); //描画 sp.graphics.beginFill(0xdddddd); sp.graphics.drawRect(0,0, label.textWidth+6,label.textHeight+6); sp.graphics.endFill(); sp.addChild(label); //フィルタの指定 var filter:BevelFilter=new BevelFilter(); filter.blurX=2; filter.blurY=2; filter.distance=1; filter.highlightColor=highlightColor; filter.shadowColor=shadowColor; var myFilters:Array=new Array(); myFilters.push(filter); sp.filters=myFilters; return sp; } //ラベルの生成 private function makeLabel(text:String,fontSize:uint):TextField { var i:uint; var label:TextField=new TextField(); label.autoSize=TextFieldAutoSize.LEFT; label.selectable=false; var format:TextFormat=new TextFormat(); format.font="_等幅"; label.text="■"; for (i=fontSize+10;i>=1;i--) { format.size=i; label.setTextFormat(format); if (label.textWidth<=fontSize) break; } label.text=text; label.setTextFormat(format); label.x=3-(label.width -label.textWidth)/2; label.y=3-(label.height-label.textHeight)/2; return label; } } }
−戻る−