Почему мой класс чтения файлов xml не работает?

Я пытаюсь создать простой класс в файле ActionScript, который обрабатывает чтение и анализ / управление XML-файлом. Этот класс принимает фрагмент ролика в качестве параметра и заставляет фрагмент ролика действовать в соответствии с результатами импорта. Я пробовал это:

class FileReader {
    var menu:MovieClip;
    function FileReader(newMenu) {
        menu = newMenu;
    }
    //Load the specified xml file
    function loadFile(fileName) {
        menu.gotoAndStop("loading");
        var name = levelName+".xml";
        var xmlFile = new XML();
        xmlFile.ignoreWhite = true;
        xmlFile.load(name);
        xmlFile.onLoad = function() {
            //Parse Input
            menu.gotoAndStop("loaded");
        };
    }
}

По какой-то причине, когда код достигает функции onLoad, файл загружается правильно, но приложение больше не знает о существовании мувиклипа меню. Если я попытаюсь отследить какие-либо атрибуты меню, оно скажет, что оно не определено. Итак, я попробовал это:

class FileReader {
    var menu:MovieClip;
    var xmlFile:XML;
    function FileReader(newMenu) {
        menu = newMenu;
    }
    //Load the specified xml file
    function loadFile(fileName) {
        menu.gotoAndStop("loading");
        var name = fileName+".xml";
        xmlFile = new XML();
        xmlFile.ignoreWhite = true;
        xmlFile.load(name);
        xmlFile.onLoad = function() {
            //Parse Input
            menu.gotoAndStop("loaded");
        };
    }
}

В этом случае файл xml вообще не загружается, а объект xmlFile не определен. Что здесь происходит и почему ни один из этих подходов не работает?


person Everett    schedule 07.09.2009    source источник


Ответы (2)


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

РЕДАКТИРОВАТЬ: Я полагаю, что на самом деле это не сработало, как я думал. Я все еще пытаюсь! Кто-нибудь с другими мыслями?

person Everett    schedule 09.09.2009

Это немного глупо, но я наконец нашел способ заставить эту работу работать:

class FileReader {
    var menu:MovieClip;
    function FileReader(newMenu) {
        menu = newMenu;
    }
    //Load the specified xml file
    function loadFile(fileName) {
        menu.gotoAndStop("loading");
        var newMenu:MovieClip = menu;   //Make a refernce to menu here
        var name = levelName+".xml";
        var xmlFile = new XML();
        xmlFile.ignoreWhite = true;
        xmlFile.load(name);
        xmlFile.onLoad = function() {
                //Parse Input
                newMenu.gotoAndStop("loaded"); //Call the refence rather than the actual object
        };
    }
}

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

person Everett    schedule 10.09.2009