XML-глоссарий AS2 с загрузкой текста

У меня есть следующий глоссарий пример кода XML as2 из flashkit, и когда я пытался выполнить трассировку, чтобы увидеть, как текст загружается из XML, я не мог понять, как код на самом деле находит правильную запись для загрузки. Когда я выполняю трассировку, он возвращает мне полный массив записей XML вместо одного.

    _master.termByID = function(termID:String) {
    displayTermByID(termID);
};

function displayTermByID(termID:String):Void {
    var info:String = "";
    var originalTerm = termID;
    var found = findTermIndex(termID);
    trace("im here");
    while(found == -1 && termID.length > 0){
        info = "The referenced term ID <i>"+originalTerm+"</i> was not found. <br>";
        trace("info:"+info);
        found = findTermIndex(termID);
        trace("found:"+found);
        termID=termID.substr(0,termID.length-1);
        trace("termID:"+termID);
    }
    if(found != -1 && originalTerm != termID){
        info += "Displaying closest matches: " + termID + "<br>";       
    } else if (termID.length ==0){
        info += "No substring yielded any matches.<br>";
    }
    whichTerm = found;
    updateInterface(info);
}

это основной метод, используемый для отображения текста, но когда я сделал трассировку, он даже не отображается в консоли, и все же текст отображается в текстовом поле.

function findTermIndex(termID:String):Number {
    var pow:Number = 2;
    var numTerms = termArray.length;
    var split:Number = Math.round(numTerms/pow);
    var currId = termArray[split].attributes.id;
    while (currId != termID && numTerms/pow>.5) {
        pow *= 2;
        if (currId<termID) {
            split += Math.round(numTerms/pow);
        } else {
            split -= Math.round(numTerms/pow);
        }
        currId = termArray[split].attributes.id;
    }
    if (currId == termID) {
        return (split);
    } else {
        return (-1);
    }
}

это используется, чтобы найти термин индекс.

function parse(glosSrc:XML):Void {
    var numTerms = glosSrc.childNodes.length;

    for (var i = 0; i<numTerms; i++) {
        var thisChild = glosSrc.childNodes[i];
        var insertPoint = termArray.length;
        while (insertPoint>0 && termArray[insertPoint-1].attributes.id>thisChild.attributes.id) {
            insertPoint--;
        }
        termArray.splice(insertPoint, 0, thisChild);
        // use this to get the imgURL value
        //trace(glosSrc.childNodes[i].childNodes[1].firstChild.nodeValue);
        //thisImg = String(glosSrc.childNodes[i].childNodes[1].firstChild.nodeValue);
    }
    searchTerms("");
    //imgLoader.contentPath = thisImg;
}

функция синтаксического анализа XML

function displaySearchResults(matches:Array):Void {
    var numMatches = matches.length;
    if (numMatches) {
        var resultString = '<textformat leading="'+resultLineSpacing+'"><font size="'+fontSize+'">';
        for (var i = 0; i<numMatches; i++) {
            resultString += '<a href="asfunction:displayTermByIndex,'+matches[i]+'">';
            var fullTerm = termArray[matches[i]].firstChild.firstChild.firstChild.nodeValue;
            var cleanTerm = escapeAtChar(fullTerm);
            resultString += cleanTerm+'</a><br>';
            //trace(resultString);
        }
        resultString += '</font></textformat>';
        //def.setTextFormat(resultFormatting);
        def.htmlText = resultString;
        //trace(resultString);
    } else {
        def.htmlText = '<font color="#'+errorHexColor+'" size="'+(fontSize+2)+'">No matching terms found.</font>';
    }
    gBoxPath.onComplete();
}

другой метод, используемый для отображения результирующего текста из XML. def - объект динамического текстового поля, используемый для отображения текста.

поэтому со всеми этими методами я проследил все возможные строки, которые передаются, но все, кажется, либо не возвращают ничего, либо возвращают целый набор параметров вместо того, который должен быть показан.

был бы рад, если кто-то может объяснить, как на самом деле работает код, поэтому я добавлю больше полей в XML.

Весь исходный файл доступен здесь.

https://www.dropbox.com/s/34acpm66adk9f62/glossary%203.zip

0 ответов

Другие вопросы по тегам