외부 txt 파일의 변수를 플래시로 가져 오려고합니다. 텍스트 파일은 다음과 같습니다플래시 : 외부 txt 파일에서 줄 바꿈 해석하기
[Settings]
AllowSetConflicts=1
[Hotkeys]
Music=F2
Sound=F6
PTT=
ChatAllies=Tab
등 내가 플래시가 줄 바꿈을 인식하고 [설정]과 같은 텍스트를 필터링 얻을 수있는 방법이 있나요?
외부 txt 파일의 변수를 플래시로 가져 오려고합니다. 텍스트 파일은 다음과 같습니다플래시 : 외부 txt 파일에서 줄 바꿈 해석하기
[Settings]
AllowSetConflicts=1
[Hotkeys]
Music=F2
Sound=F6
PTT=
ChatAllies=Tab
등 내가 플래시가 줄 바꿈을 인식하고 [설정]과 같은 텍스트를 필터링 얻을 수있는 방법이 있나요?
. 실제로 얼마나 많은 응용 프로그램이 설정을 저장하고 있는지 (xml 형식으로)입니다.
하지만 파일을 변경할 기회가 없다면 다음과 같이하십시오.
package {
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
import flash.events.IOErrorEvent;
public class Main extends Sprite {
private var urlL:URLLoader;
private var props:Object = {};
// props will be assigned all the data from the txt file
private var file:String = 'file.txt';
public function Main() {
urlL = new URLLoader(new URLRequest(file));
urlL.addEventListener(Event.COMPLETE,processFile);
}
private function fileNotLoaded(e:IOErrorEvent):void {
trace(file, 'could not be loaded');
}
private function processFile(e:Event):void {
var str:String = urlL.data.toString();
var ref:Object, prop:String, val:*;
var lines:Array = str.split(/\r\n?|\n/g);
for (var i:int = 0; i < lines.length; i++) {
// if it's an empty line...
if (/^\s*$/.test(lines[i])) continue;
// if it's a category line...
if (/^\[.+?\]$/.test(lines[i])) {
ref = props[lines[i].replace(/^.(.+?).$/,'$1')] = {};
// if it's a variable-value pair line...
} else if (/^[^\r\n]+=[^\r\n]*$/.test(lines[i])) {
prop = lines[i].split('=')[0];
val = detectType(lines[i].substr(prop.length+1));
ref[prop] = val;
}
}
}
private function detectType(s:String):* {
// this is an optional function to convert strings
// with basic data types into appropriate class instances
if (s == 'null') return null;
if (/^(\d+|(\d+)?\.\d+)$/.test(s)) return Number(s);
if (/^true$/.test(s)) return true;
if (/^false$/.test(s)) return false;
return s;
}
}
}
가능하면 XML 형식이나 JSON 형식을 사용하는 것이 좋습니다. 더 안전하고 파서를 작성할 필요가 없기 때문입니다.
ActionSctipt :
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
var textLoader:URLLoader = new URLLoader();
textLoader.addEventListener(Event.COMPLETE, textHandler);
textLoader.load(new URLRequest('txt.txt'));
function textHandler(e:Event):void{
var s:String = e.target.data;
var params:Array = s.split('\r');
trace(params[0].replace('\n',''));
trace(params[1].replace('\n',''));
}
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, xmlHandler);
xmlLoader.load(new URLRequest('xml.txt'));
function xmlHandler(e:Event):void{
var xml:XML = new XML(e.target.data);
trace(xml.settings.AllowSetConflicts);
}
txt.txt :
[Settings]
AllowSetConflicts=1
[Hotkeys]
Music=F2
Sound=F6
xml.txt : 나는 양말 폭스에 동의
<root>
<settings>
<AllowSetConflicts>
1
</AllowSetConflicts>
</settings>
</root>