如何在AS3中加载xml数据并跨多个帧显示它

如何在AS3中加载xml数据并跨多个帧显示它,xml,actionscript-3,flash,Xml,Actionscript 3,Flash,我试图从xml文件中加载数据,将它们加载到数组中,并在动态文本字段中的不同帧中显示这些数组中的单词。因此,例如,将在DynText文本字段中为两帧显示WordArray[0]。在此演示之后,将在同一文本字段中为四帧显示WordArray[1],然后在同一文本字段中为一帧显示KeyWordArray[0],以此类推 以下是我目前掌握的代码: var xmlLoader:URLLoader = new URLLoader(); var xmlData:XML = new XML(); xmlLoad

我试图从xml文件中加载数据,将它们加载到数组中,并在动态文本字段中的不同帧中显示这些数组中的单词。因此,例如,将在DynText文本字段中为两帧显示WordArray[0]。在此演示之后,将在同一文本字段中为四帧显示WordArray[1],然后在同一文本字段中为一帧显示KeyWordArray[0],以此类推

以下是我目前掌握的代码:

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("file2.xml"));

function LoadXML(e:Event):void {
xmlData = new XML(e.target.data);
ParsePass(xmlData);
}

var WordArray:Array = new Array();
var KeyWordArray:Array = new Array();

function ParsePass(passInput:XML):void {
var WordAll:XMLList = passInput.Pass.Word.text();
var PrimeAll:XMLList = passInput.Pass.Keyword.text();

for (var i in WordAll) {
    WordArray.push(WordAll[i]);
}
for (var p in PrimeAll) {
    KeyWordArray.push(PrimeAll[p]);
}

}
我能够加载xml数据,将其放入数组中,并在动态文本字段的第一个帧中显示WordArray[0],使用:

DynText.text = WordArray[0];
但其他帧中没有。我尝试在ParsePass函数中调用函数,但它似乎不起作用。
如果这是一个基本问题,我很抱歉。我不熟悉AS3。但是我在网上搜索了一下,没有找到任何与我的问题相关的答案。因此,任何帮助都将不胜感激。

请在此处阅读有关解析XML的内容:

要在帧上添加各种数据,请尝试使用

您可以向特定帧添加代码,以将数据加载到位于该帧上的容器中。 或者另一种解决方案是在所有帧上使用相同的容器,但根据帧编号动态加载数据

编辑:


还要注意,在Flash帧中,枚举从1开始,并确保使用stop()方法停止所需帧上的MovieClip

仅显示最后一条addframe语句。我尝试了:addFrameScript(0,DynText.text=WordArray[0];addFrameScript(2,DynText.text=WordArray[1]);addFrameScript(4,DynText.text=WordArray[2]);(是否嵌入函数)和最后一个(WordArray[2])显示。然后您应该尝试在输入帧事件时向该MovieClip添加事件侦听器,并根据当前帧显示所需的文本。我将用代码更新我的答案。好的,我现在就知道了!谢谢,它工作得很好!我还通过添加ShowWord()使其正常工作在ParsePass函数中,通过为每个数组的每个元素指定一个变量,并在我需要的确切帧处调用相应的文本字段来实现。但是您的代码更易于处理。谢谢!
MyMC.addEventListener(Event.ENTER_FRAME, OnEnterFrameHandler);
function OnEnterFrameHandler(e:Event):void
{
   switch(e.target.currentFrame)
   {
       case 1: TextBox.text = WordArray[0];
               break;
       case 3: TextBox.text = WordArray[1];
               break;
       case 5: TextBox.text = WordArray[2];
               break;
   }
}