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

'tech > FLASH' 카테고리의 다른 글

[AS3] 잘 되던게 안된다. ㅜㅜ  (0) 2011.08.30
adobe flash 10.3으로 퍼블리싱 해봅시다.  (0) 2011.08.12
getDefinitionByName  (0) 2011.01.09
상수 const  (0) 2011.01.09
1180:call to a possibly undefined method addChild.  (0) 2010.12.07

+ Recent posts