我正在尝试将变量的txt文件加载到我的AS3项目中。我遇到的问题似乎是因为txt文件(预先格式化且无法更改)使用双安瓿格式化...例如。
&安培;名称=标记&安培;
&安培;地址=此处&安培;
&安培;电话= 12345&安培;
我正在使用以下代码加载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);
}
使用URLLoaderDataFormat.VARIABLES会生成以下错误:
Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
如果我使用URLLoaderDataFormat.TEXT,我可以成功加载数据,但我无法(或不知道如何)访问变量。
请有人有任何想法或解决这个问题。
谢谢,
标记
答案 0 :(得分: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编辑器,所以,也许你会发现错误。
答案 1 :(得分:2)
如果你有String中的数据并且它的结构与你写的一样,你可以做一个解决方法:
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];
}
这应该会使你成为一个具有适当变量的对象。