使用 Actionscript 3 在 Flash 中动画导入 XML 数据

Animate imported XML data in Flash with Actionscript 3

我创建了一个简单的动画屏幕节目,它从 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)。 ...等等。

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

大家干杯

如前所述,您不能设置尚不存在的文本字段(或任何对象)的文本(或任何 属性)。因此,您可以将它们留在第 1 帧(或放置 XML 加载脚本的任何位置)并隐藏它们,或者像您当前对 xmlData 所做的那样存储 XML 并将文本分配给这些文本字段出现的框架。

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

  • 将您的 XML 存储在一个变量中,就像您目前对 xmlData 所做的那样。
  • 创建一个符号,将其命名为 XMLTextLoader。它应该包含一个动态 TextField,其名称如 textField.
  • 将这个 XMLTextLoader 符号的实例放在任何你想要的地方。为它们提供映射到它们将显示的 XML 数据的实例名称,例如 text_mondaytext_tuesday.
  • XMLTextLoader 符号的第 1 帧(或链接到符号的 class 中),您可以使用名称来确定要显示的 XML 数据:

var xmlName:String = this.name.split("_")[1]; // Ex: "text_monday" => "monday"
var xml:XML = parent.xmlData[xmlName];
this.textField.text = xml;

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

如果您需要截然不同的文本样式(即单个动态 TextField 不能用于表示所有文本),您可以将代码放在外部 class 文件中,例如XMLTextLoader.as,并创建相同结构的多个符号,并将它们全部设置为在库中将它们的 "base class" 设置为 XMLTextLoader.as