2015-10-19 49 views
0

我创建了一个简单的动画屏幕显示,可以从客户端每周可以编辑的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问题,因为这对我来说都是新的。 任何帮助将不胜感激。

干杯所有

+0

除非文本字段可用,否则不能设置文本字段的文本。因此,您可以:在第一帧中为所有文本字段设置文本,然后可以根据当前帧隐藏/显示适当的文本字段,或保存数据并在相应帧中使用它以设置为文本字段文本... – akmozo

回答

0

如前所述,你不能设置一个文本框(或任何对象)尚不存在的文本(或属性)。因此,您可以将它们放在第1帧(或放置XML加载脚本的任何位置)并隐藏它们,也可以将它们保存为xmlData,并将这些文本分配到显示这些文本字段的帧上。

或者你可以在一个符号包装这个东西:

  • 存储XML作为你现在做xmlData的变量。
  • 创建一个符号,称之为XMLTextLoader。它应该包含一个动态的TextField,其名称如textField
  • 将这个XMLTextLoader符号的实例放在任何你想要的地方。为他们提供映射到它们将显示的XML数据的实例名称,例如text_mondaytext_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

相关问题