正如 Florian 指出的那样,getDefinitionByName
它专门用于获取 Class 参考。例如,像“flash.net.URLLoader”这样的东西会给你一个 URLLoader 类的引用。它不用于通过名称获取常规变量(因此即使“N”是 的属性,“evt.target.data.N”也不会返回任何内容data
)。
听起来你evt.target.data
是一个沿着“ A=tileA&B=tileB&C=tileC ”行的长字符串。如果是这样,您需要先将该字符串解析为单独的变量。您应该能够使用具有该数据格式的 URLVariables (flash.net.URLVariables),然后您可以使用 [ ] 数组访问运算符读取解析的变量:urlVariablesObject["variableName"]
。所以你可能会做这样的事情:
import flash.events.Event;
import flash.net.URLVariables;
import flash.net.URLLoader;
import flash.net.URLRequest;
var loader:URLLoader = new URLLoader();
var parsedData:URLVariables;
var mapData:Array = [["A", "B", "C"], ["D", "E", "F"]];
loader.addEventListener(Event.COMPLETE, externalFileLoaded);
loader.load(new URLRequest("externalFile.txt"));
// externalFile.txt contains "A=tileA&B=tileB&C=tileC&D=tileD&E=tileE&F=tileF".
function externalFileLoaded(evt:Event):void {
parsedData = new URLVariables(evt.target.data);
var tileID:String = readMap(0, 1);
trace(tileID); // "tileB".
}
function readMap(i:uint, j:uint):String {
var mapValue:String = mapData[i] [j];
var tileID:String = parsedData[mapValue];
return tileID;
}