Поле поиска внутри Flash, чтение данных из локального xml (ActionScript)

У меня проблемы с выполнением этой работы. Пытаюсь сделать отображение данных на флешке из внешнего xml. Пока что работает только получение первого ребенка, но мне нужно поле поиска в больших данных xml. Есть ли способ поиска по настраиваемым узлам? Скажем, во вводимом тексте я пишу «june_123», поэтому после нажатия кнопки я получаю значения (имя, счет, уровень, жизни) и отображаю их.

Код 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;
    }
}

Затем у меня есть динамическое текстовое поле flash 4 с переменными «data1», «data2», «data3», «data4». И одно текстовое поле ввода с именем переменной «finder». Мне нужно найти внутри xml имя узла, заданное вводимым текстом. Или это как-нибудь сделать. Если поменять xml на txt или что-то в этом роде.


person yaelmania    schedule 21.11.2014    source источник
comment
Это похоже на ActionScript 2.0. Мне это надоело, но ваши xml-записи действительно должны выглядеть как <june_123> val1="63400" val2="45" Val3="2" </june_123> .. вы не можете использовать несколько элементов в одном теге, если только вы не согласны получить результат String, например val1="63400" val2="45" Val3="2", а затем выполнять строковые функции для извлечения того, что вы хотите. Может быть, кто-то еще может добавить дополнительную информацию (например, несколько записей в одном теге ..)   -  person VC.One    schedule 21.11.2014
comment
@ VC.Один ошибается. Теги XML, безусловно, могут иметь более одного свойства.   -  person Marcela    schedule 21.11.2014


Ответы (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

}
person akmozo    schedule 27.11.2014