我正在尝试在actionscript文件中创建一个简单的类来处理xml文件的读取和解析/管理。此类将movieclip作为参数,并使影片剪辑根据导入的结果进行操作。我试过这个:
class FileReader {
var menu:MovieClip;
function FileReader(newMenu) {
menu = newMenu;
}
//Load the specified xml file
function loadFile(fileName) {
menu.gotoAndStop("loading");
var name = levelName+".xml";
var xmlFile = new XML();
xmlFile.ignoreWhite = true;
xmlFile.load(name);
xmlFile.onLoad = function() {
//Parse Input
menu.gotoAndStop("loaded");
};
}
}
由于某种原因,当代码到达onLoad函数时,文件正确加载但应用程序不再知道菜单动画片段的存在。如果我试图跟踪菜单的任何属性,它说它是未定义的。所以我试过这个:
class FileReader {
var menu:MovieClip;
var xmlFile:XML;
function FileReader(newMenu) {
menu = newMenu;
}
//Load the specified xml file
function loadFile(fileName) {
menu.gotoAndStop("loading");
var name = fileName+".xml";
xmlFile = new XML();
xmlFile.ignoreWhite = true;
xmlFile.load(name);
xmlFile.onLoad = function() {
//Parse Input
menu.gotoAndStop("loaded");
};
}
}
在这种情况下,xml文件根本不会加载,并且xmlFile对象未定义。这里发生了什么,为什么这两种方法都不起作用?
答案 0 :(得分:0)
通过使用第一种方法,我发现我可以简单地将影片剪辑作为参数传递。然后,该函数将识别影片剪辑并按预期正常操作。仍然感到困惑的是,如果没有参数传递它将无法工作。
修改强> 我想这实际上并没有像我想象的那样奏效。我还在努力!有其他想法的人吗?
答案 1 :(得分:0)
这有点傻,但我终于找到了一种方法来完成这项工作:
class FileReader {
var menu:MovieClip;
function FileReader(newMenu) {
menu = newMenu;
}
//Load the specified xml file
function loadFile(fileName) {
menu.gotoAndStop("loading");
var newMenu:MovieClip = menu; //Make a refernce to menu here
var name = levelName+".xml";
var xmlFile = new XML();
xmlFile.ignoreWhite = true;
xmlFile.load(name);
xmlFile.onLoad = function() {
//Parse Input
newMenu.gotoAndStop("loaded"); //Call the refence rather than the actual object
};
}
}
通过对菜单进行新的引用,onLoad函数可以使用此引用与实际的菜单影片剪辑进行对话。我想这很有效。