import flash.text.TextField;
import flash.net.FileReference;
import flash.events.Event;
import flash.text.TextFieldType;
import flash.events.MouseEvent;
System.useCodePage = false;
var fileLoad:FileReference;
var fileSave:FileReference;
loadbtn.addEventListener(MouseEvent.CLICK, onloadbtnClicked);
savebtn.addEventListener(MouseEvent.CLICK, saveClickListener);
function saveClickListener(e:MouseEvent):void
{
statetext.text = "saveClickListener";
fileSave = new FileReference();
fileSave.addEventListener(Event.COMPLETE, fileCompleteListener);
var str:String = myTextInput.text;
fileSave.save(str, "test.txt");
}
function fileCompleteListener(e:Event):void
{
statetext.text = "fileCompleteListener";
}
function onloadbtnClicked(event:MouseEvent):void
{
statetext.text = "onBrowse";
fileLoad = new FileReference();
fileLoad.addEventListener(Event.SELECT, onFileSelected);
//var swfTypeFilter:FileFilter = new FileFilter("Text Files","*.txt;");
var allTypeFilter:FileFilter = new FileFilter("AlFl Files (*.*)","*.*");
//fileLoad.browse([swfTypeFilter, allTypeFilter]);
fileLoad.browse([allTypeFilter]);
}
function onFileSelected(event:Event):void
{
statetext.text = "onFileSelected";
fileLoad.addEventListener(Event.COMPLETE, onFileLoaded);
fileLoad.addEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);
fileLoad.load();
}
function onFileLoaded(event:Event):void
{
statetext.text = "onFileLoaded";
var fileReference:FileReference = event.target as FileReference;
trace("event.target : " + event.target.name);
var data:ByteArray = fileReference["data"];
myTextInput.text = data.toString();
fileLoad.removeEventListener(Event.COMPLETE, onFileLoaded);
fileLoad.removeEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);
}
function onFileLoadError(event:Event):void
{
fileLoad.removeEventListener(Event.COMPLETE, onFileLoaded);
fileLoad.removeEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);
statetext.text = "File load error";
} |
text파일 세이브와 로드를 만들 일이 있어서 만들게 되었습니다. load, save 작성 중 막히는 부분이 있어서 구글링을 하였습니다. 각 각 따로였지만, 정리를 제가 했습니다.
1. 디버그용으로 스테이지의 상단에 TextArea를 인스턴스 네임 statetext으로 생성했습니다.
2. statetext 하단에 myTextInput 인스턴스 네임을 갖는 TextArea 생성.
* TextArea 이 아닌 직접 inputText 형식으로 영역 그려주셔도 됩니다.
*참조 사이트 :
http://actionscriptexamples.com/2008/02/26/loading-text-files-using-the-urlloader-class-in-actionscript-30/
http://help.adobe.com/ko_KR/AS3LCR/Flash_10.0/
http://www.ilike2flash.com/2009/07/load-external-text-in-actionscript-3.html