2014-11-21 29 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 

}