2012-06-14 4 views
0

변수의 txt 파일을 AS3 프로젝트에로드하려고합니다. 내가 가지고있는 문제는 txt 파일 (미리 형식이 지정되어 있고 변경할 수 없음)이 이중 앰퍼샌드를 사용하여 포맷 된 것인데 ...&& 서식이있는 txt 파일에서 AS3로드 변수

& 이름 = 마크 여기 &
& 주소 = &
& 전화 = 내가 URLLoaderDataFormat.VARIABLES로를 사용하여 txt 파일

myLoader.addEventListener(Event.COMPLETE, onLoaded, false, 0, true); 
myLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 
urlRqSend = new URLRequest(addressToTxt.txt); 

public function onLoaded(e:Event):void { 
trace(myLoader.data); 
} 

를로드하려면 다음 코드를 사용하고 12345 &

다음과 같은 오류가 발생합니다 :

Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs. 

데이터를 성공적으로로드 할 수 있지만 변수에 액세스 할 수 없거나 액세스 할 수 없습니다.

아무에게도 아이디어가 없거나이 문제를 해결할 수 있습니까?

감사합니다,

마크

답변

3

나는 얼마 전에 그런 종류의 문제가있었습니다. 어쩌면,

var textVariables:String; 
var objectVariables:Object = new Object(); 
... 
myLoader.addEventListener(Event.COMPLETE, onLoaded, false, 0, true); 
myLoader.dataFormat = URLLoaderDataFormat.TEXT; 
urlRqSend = new URLRequest(addressToTxt.txt); 

public function onLoaded(e:Event):void { 
    textVariables = myLoader.data; 
    textVariables = textVariables.split("\n").join("").split("\r").join(""); // removing line breaks 
    textVariables = textVariables.split("&&").join("&"); // removing extra amphersands 

    var params:Array = textVariables.split('&'); 

    for(var i:int=0, index=-1; i < params.length; i++) 
    { 
     var keyValuePair:String = params[i]; 
     if((index = keyValuePair.indexOf("=")) > 0) 
     { 
      var key:String = keyValuePair.substring(0,index); 
      var value:String = keyValuePair.substring(index+1); 
      objectVariables[key] = value; 
      trace("[", key ,"] = ", value); 
     } 
    } 

} 

내가 직접 여기에 코드를 작성, 내가 여기에 어떤 AS3 편집기를 가지고 있지 않기 때문에 : 난 당신이 텍스트로 처음로드하는 줄 바꿈, 여분의 amphersands를 제거하고 수동 구문 분석하는 것이 좋습니다 오류가 발생합니다.

+0

답변 해 주신 Marcelo에게 감사드립니다. – crooksy88

2

당신은 문자열 데이터를 가지고 당신이 쓴 것처럼 구조를 가지고 있다면, 당신은 문제를 해결 할 수 있습니다 :

dataInString = dataInString.split("\n").join("").split("\r").join(""); // removing EOL 
dataInString = dataInString.slice(0,-1); // removing last "&" 
dataInString = dataInString.slice(0,1); // removing first "&" 

var array:Array = dataInString.split("&&"); 
var myVariables:Object = new Object(); 

for each(var item:String in array) { 
    var pair:Array = item.split("="); 
    myVariables[pair[0]] = pair[1]; 
} 

당신 오브젝트해야한다 적절한 변수.

+0

답변 해 주셔서 감사합니다. 귀하의 솔루션은 거의 작동하지만 문자열에 대한 슬라이스 메서드는 슬라이스 된 요소를 반환하므로 단일 & 불행히도 나는 2 개의 대답을 받아 들일 수 없다. – crooksy88