Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Actionscript 3在Flash中为导入的XML数据制作动画_Xml_Actionscript 3_Flash - Fatal编程技术网

使用Actionscript 3在Flash中为导入的XML数据制作动画

使用Actionscript 3在Flash中为导入的XML数据制作动画,xml,actionscript-3,flash,Xml,Actionscript 3,Flash,我创建了一个简单的动画屏幕,它从xml文档中导入7个不同的文本值,客户机每周都可以编辑这些值 我在flash中使用的代码如下: var xmlData:XML = new XML(); var theURL_ur:URLRequest = new URLRequest("ClientText.xml"); var loader_ul:URLLoader = new URLLoader(theURL_ur); loader_ul.addEventListener("complete", fileL

我创建了一个简单的动画屏幕,它从xml文档中导入7个不同的文本值,客户机每周都可以编辑这些值

我在flash中使用的代码如下:

var xmlData:XML = new XML();
var theURL_ur:URLRequest = new URLRequest("ClientText.xml");
var loader_ul:URLLoader = new URLLoader(theURL_ur);
loader_ul.addEventListener("complete", fileLoaded);

function fileLoaded(e:Event):void
{
   xmlData = XML(loader_ul.data);

   m_txt.text = xmlData.monday;
   tu_txt.text = xmlData.tuesday;
   w_txt.text = xmlData.wednesday;
   th_txt.text = xmlData.thursday;
   f_txt.text = xmlData.friday;   
}
我把这段代码放在我的动作层的第1帧上,并在第2层添加了7个单独的动态文本框,标有相应的实例名称

在导出所有作品时,使用链接的xml文档中的指定文本填充所有7个文本框

我遇到的问题是,除非所有文本框都在第1帧上,否则它们不会显示

我试图在第20帧显示文本框1(m_-txt),然后在第40帧显示文本框2(tu_-txt),然后在第60帧显示文本框3(w_-txt),以此类推

道歉,因为这是一个真正的noob问题,因为这对我来说是全新的。 任何帮助都将不胜感激


Cheers all

如上所述,您不能设置尚未存在的文本字段(或任何对象)的文本(或任何属性)。因此,您可以将它们放在第1帧(或放在XML加载脚本的任何位置)并隐藏它们,或者像当前使用
xmlData
一样存储XML,并在这些文本字段出现的帧上指定文本

或者你可以用一个符号来包装这些东西:

  • 将XML存储在变量中,就像当前使用
    xmlData
    所做的那样
  • 创建一个符号,称之为
    XMLTextLoader
    。它应该包含一个名为
    TextField
    的动态
    TextField
  • 将此
    XMLTextLoader
    符号的实例放置在您需要的任何位置。为他们提供映射到他们将显示的XML数据的实例名称,例如
    text\u monday
    text\u tuday
  • XMLTextLoader
    符号的第1帧上(或在链接到符号的类中),可以使用名称来确定要显示的XML数据:

现在您有了一个可重用的组件,比如符号,它可以放在任何地方,它将处理显示XML中的文本。它不需要额外的时间线代码,如果你移动它们,它仍然可以工作


如果您需要显著不同的文本样式(即单个动态
TextField
不能用于表示所有文本),您可以将代码放入外部类文件中,例如
XMLTextLoader.as
,并创建相同结构的多个符号,并将它们都设置为具有“基类”在库中设置为
XMLTextLoader.as

除非文本字段可用,否则无法设置文本字段的文本。因此,您可以:在第一帧中为所有文本字段设置文本,然后根据当前帧隐藏/显示相应的文本字段,或者保存数据,并在适当的帧中使用它来设置文本字段文本。。。
var xmlName:String = this.name.split("_")[1]; // Ex: "text_monday" => "monday"
var xml:XML = parent.xmlData[xmlName];
this.textField.text = xml;