2014-11-21 28 views
0

我无法完成这项工作。我尝试从外部xml制作闪光灯的显示数据。到目前为止,它只是获得第一个孩子,但我需要一个大型XML数据中的搜索框。有什么方法可以搜索自定义节点?让我们说输入文本我写“june_123”,所以点击按钮后,我得到的值(名称,分数,水平,生命),并显示它。Flash中的搜索框,从本地xml读取数据(actionscript)

代码XML

<mark56 val1="5000" val2="23" Val3="3"/> 
<june_123 val1="63400" val2="45" Val3="2"/> 
<uglyman val1="600" val2="12" Val3="1"/> 
<sugarpunch val1="456223" val2="54" Val3="3"/> 

代码的ActionScript

//Frame 1 

getxmldata = new XML(); 
getxmldata.load("xmldata.xml", ""); 

//Frame 2 

stop(); 

//Button 1 

on (release) 
{ 
    if (getxmldata.loaded) 
    { 
     var innerdata = getxmldata.firstchild; 
     data1 = inner.nodeName; 
     data2 = inner.attributes.val1; 
     data3 = inner.attributes.val2; 
     data4 = inner.attributes.val2; 
    } 
} 

然后,我必须与变量“数据1”,“数据2”,“数据3”,“数据4”闪4动态文本框。和一个输入文本框白色变量名称“finder”我需要找到内部xml输入文本给出的节点名称。或者有什么办法。如果更改xml为txt或其他东西。

+0

这看起来像ActionScript 2.0中。我生锈的那一个,但你的xml条目真的应该看起来像' val1 =“63400”val2 =“45”Val3 =“2”'..你不能扔多个项目在一个标签,除非你没有问题得到一个字符串结果就像'val1 =“63400”val2 =“45”Val3 =“2”'然后用String函数来提取你想要的结果。也许别人可以添加额外的信息(尤其是一个标签中的多个条目..) – 2014-11-21 08:55:58

+0

@ VC.One是错误的。 XML标签当然可以拥有多个属性。 – Marcela 2014-11-21 20:37:25

回答

1

我写了一个代码,可以很好地处理你的xml文件。我使用了我在主要阶段插入的btn_search按钮和txt_search文本字段。首先我们载入我们的xml文件,然后我们在txt_search键入一个表演者姓名,然后用btn_search运行搜索:

var xml:XML = new XML() 
    xml.load('xmldata.xml') 

btn_search.onRelease = function(){ 

    if(txt_search.text != ''){ 
     search_player_by_name(txt_search.text) 
    } 

} 

function search_player_by_name(player_name){  

    if(!xml.loaded){ 
     trace('the xml file is not yet loaded') 
     return false 
    } 

    var players, player 

    players = xml.childNodes 
    for (i=0; i<players.length; i++) { 
     player = players[i] 
     if(player.nodeName != '' && player.nodeName != null){ 
      if(player.nodeName == player_name){ 
       trace('name : ' + player.nodeName) 
       trace('score : ' + player.attributes.val1) 
       trace('level : ' + player.attributes.val2) 
       trace('lives : ' + player.attributes.Val3) 
       // return an array that contains player data 
       return new Array(player.nodeName, player.attributes.val1, player.attributes.val2, player.attributes.Val3) 
      } 
     } 
    } 
    trace('there is no player with that name : ' + player_name) 
    return false 

}