使用Actionscript 3在Flash中动画导入的XML数据
问题描述:
我创建了一个简单的动画屏幕显示,可以从客户端每周可以编辑的xml文档中导入7个不同的文本值。使用Actionscript 3在Flash中动画导入的XML数据
我使用闪光灯的代码是下面的代码:
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帧的代码,并添加标有其相应的实例名称7个单独的动态文本框在层2上
在导出所有作品时,应该在链接的xml文档中使用指定文本填充所有7文本框。
我遇到的问题是,除非所有的文本框都在第1帧,他们不显示。
我试图在第20帧上显示文本框1(m_txt),然后在第40帧显示文本框2(tu_txt),然后在60 ....上显示文本框3(w_txt)等等。
道歉,因为这是一个真正的noob问题,因为这对我来说都是新的。 任何帮助将不胜感激。
干杯所有
答
如前所述,你不能设置一个文本框(或任何对象)尚不存在的文本(或属性)。因此,您可以将它们放在第1帧(或放置XML加载脚本的任何位置)并隐藏它们,也可以将它们保存为xmlData
,并将这些文本分配到显示这些文本字段的帧上。
或者你可以在一个符号包装这个东西:
- 存储XML作为你现在做
xmlData
的变量。 - 创建一个符号,称之为
XMLTextLoader
。它应该包含一个动态的TextField
,其名称如textField
。 - 将这个
XMLTextLoader
符号的实例放在任何你想要的地方。为他们提供映射到它们将显示的XML数据的实例名称,例如text_monday
和text_tuesday
。 - 在
XMLTextLoader
符号的第一帧(或链接到符号的一类),您可以使用名称,以确定哪些XML数据显示:
var xmlName:String = this.name.split("_")[1]; // Ex: "text_monday" => "monday"
var xml:XML = parent.xmlData[xmlName];
this.textField.text = xml;
现在你有一个重可以放置在任何地方的可使用组件的符号,它将处理显示来自XML的文本。它不需要额外的时间线代码,如果你移动它们,它仍然可以工作。
如果您需要显着不同的文本样式(即单个动态TextField
不能用来表示所有文本),你可以把代码在外部类文件,如XMLTextLoader.as
,并创建相同的多个符号结构并将它们全部设置为在库中将其“基类”设置为XMLTextLoader.as
。
除非文本字段可用,否则不能设置文本字段的文本。因此,您可以:在第一帧中为所有文本字段设置文本,然后可以根据当前帧隐藏/显示适当的文本字段,或保存数据并在相应帧中使用它以设置为文本字段文本... – akmozo