Flash&ActionScript/ActionScript
2008/11/03 06:20
txt 데이터 한줄씩 해석하기
test.txt
//주석
kioskIndex 0
wallHost 58.181.14.109
port 8001
defaultMode 1
lowsize 60
cellNum 72
delTime 35
package com.hansune.loader {
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.utils.Proxy;
import flash.utils.flash_proxy;
dynamic public class TXTLoader extends Proxy implements IEventDispatcher {
static private var _instance:TXTLoader;
private var _eventDispatcher:EventDispatcher;
private var _data:Array;
private var _isLoaded:Boolean;
private var _urlLoader:URLLoader;
static public const INIT:String = "init";
public function get isLoaded():Boolean {
return _isLoaded;
}
public function TXTLoader(enforcer:SingletonEnforcer){
_eventDispatcher = new EventDispatcher();
_isLoaded = false;
}
private function onFLRDataLoaded(event:Event):void {
_data = new Array();
var loadTxt:String = event.target.data;
var expression:RegExp=/[\n\r\f]/g;
var strArray:Array = loadTxt.split(expression);
var len:int = strArray.length;
for(var i:int = 0; i < len; ++i){
if(strArray[i].charAt(0) != " " && strArray[i].charAt(0) != "/"){
var varArray:Array = String(strArray[i]).split(" ");
_data.push({name:varArray[0], value:varArray[1]});
}
}
_isLoaded = true;
dispatchEvent(new Event(TXTLoader.INIT, true, true));
}
public static function getInstance():TXTLoader {
if(TXTLoader._instance == null){
TXTLoader._instance = new TXTLoader(new SingletonEnforcer());
}
return TXTLoader._instance;
}
flash_proxy override function getProperty(name:*):*{
for(var i:int=0;i<_data.length;++i){
if(name == _data[i].name){
break;
}
}
return _data[i].value;
}
public function loadSettings(url:String):void{
var urlRequest:URLRequest = new URLRequest(url);
_urlLoader = new URLLoader();
_urlLoader.addEventListener(Event.COMPLETE, onFLRDataLoaded);
_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, err);
_urlLoader.load(urlRequest);
}
function err(e:IOErrorEvent){
trace("can't find the setting file");
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int=0, weakRef:Boolean=false):void{
_eventDispatcher.addEventListener(type, listener, useCapture, priority, weakRef);
}
public function dispatchEvent(event:Event):Boolean{
return _eventDispatcher.dispatchEvent(event);
}
public function hasEventListener(type:String):Boolean{
return _eventDispatcher.hasEventListener(type);
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{
_eventDispatcher.removeEventListener(type, listener, useCapture);
}
public function willTrigger(type:String):Boolean{
return _eventDispatcher.willTrigger(type);
}
}
}
class SingletonEnforcer{}

