我正在创建一个项目,该项目允许我在 XML 文档中定义对象并让 flash 创建所需的项目并在运行时显示。毋庸置疑,这是缓慢的进步,我一直在学习。
我现在遇到了一个障碍,相比之下应该很容易。但我正在画一个空白。尽管与我的好朋友 Google 一起度过了几个小时,但我似乎无法用这样的方式来表达这一点,以便找到其他想要实现相同目标的人。
描述
目前我有一个菜单处理类,这就是问题所在。menuHandler 类的一个实例被创建。它通过调用传递两个字符串的类(LoadFramework)来使用。一个是 XML 文件的地址,另一个是 XML 文档中的标签,用于指定需要读取的部分。
XML 文档由一个类加载,然后解析为一个变量。然后根据传递的第二个字符串(XML 标记的值),将该 XML 文档的适当部分翻译到屏幕上。这一切都很好,但这里有一个问题......
我设法让这个工作的唯一方法是使用一个 switch 语句,每个潜在标签都有一个 case。然后我编写了一个适当的 for-each-in 循环。以下是其中一种 case 语句的示例(除了“event.dat.XYZ.element”部分之外,它们都是相同的)。“event.dat”是一个自定义处理程序传递的变量,它包含 XML 数据。XYZ 是标签的名称(在本例中为“home”),每个“元素”都是一个包含属性的标签。
case "home":
for each (var menuField:XML in event.datPass.home.element) {
mnDataHold.push(menuFieldHome);
loopCount ++;
} // for each (var menuField:XML in event.datPass.home)
ActionMenu(loopCount);
break;
event.datPass 中保存的 XML 示例。
<home label="home">
<element label="menuType">HomeScreen</element>
<element label="screenType">Game.assets.menuScreens.homeScreen</element>
<element label="buttonCoords">400,50,400,100,400,150,400,200</element>
<element label="buttonNames">baseButton,baseButton,baseButton,baseButton</element>
<element label="labelCoords">440,51,425,101,430,151,438,201</element>
<element label="labelTexts">Play,Options,Credits,More</element>
<element label="labelColors">0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF</element>
<element label="labelSizes">22,22,22,22</element>
<element label="labelBolds">true,true,true,true</element>
<element label="buttonCommands">startGame,diplaysMnuOptions,displayMnuCredits,displayMnuMoreGames</element>
</home>
我 想要做的是用变量替换 for-each-in 循环中的部分或全部对象,然后将字符串作为引用而不是使用它作为值。
这样我就可以最终放弃开关,而只需要有类似的东西:
for each (var menuField:XML in [mnVariable]) {
mnVariable 将包含字符串,例如“event.datPass.home.element”。或者:
for each (var menuField:XML in event.dat.[mnVariable].element) {
mnVariable 将包含字符串,例如“home”。
但是,按照第一种方式编写,所发生的只是 for-each-in 循环在 mnVariable 中查找以查找 menuField 中的值,但它不会找到。用第二种方式写它只会抛出一个错误。我需要 [mnVariable] 用于评估“查看此字符串命名的对象”的含义
任何指针都非常高兴地收到。