Flash загружает XML по-разному в Windows и Mac

Я загружаю XML-файл, используя AS2.0. На Mac все элементы загружаются полностью, но как только я запускаю его в Windows, itemзагружается только первый элемент типа . Когда я запускаю его на Mac, элементы загружаются, и все они itemявляются отдельными кнопками. Когда я запускаю его в Windows, появляется только одна кнопка с именем ch1. Virgin Group Holdings. Ни один из других itemэлементов не загружается. У меня нет версий Flash для Windows, поэтому я не могу отлаживать.

Есть ли другой способ определить, связано ли это с неполной загрузкой XML-файла или с глубиной фрагментов ролика? Вот URL

Вот мой XML:

<?xml version="1.0" encoding="UTF-8"?>
<menu>
    <item link="vgh" name="ch1. Virgin Group Holdings" movie="VirleoGH">
        <menuitem link="vgh_overview">Group Overview</menuitem>
        <menuitem link="vgh_capacity">Group Capacity</menuitem>
        <menuitem link="vgh_archive">Certification Archive</menuitem>
        <menuitem link="vgh_timeline">Timeline</menuitem>
    </item>
    <item link="mdb" name="ch2. Manny Design Bureau" movie="MechanologyDB">
        <menuitem link="mdb_overview">Overview</menuitem>
        <menuitem link="mdb_archive">Works Archive</menuitem>
        <menuitem link="mdb_showroom">Showroom</menuitem>
        <menuitem link="mdb_skills">Core Skills</menuitem>
        <menuitem link="mdb_products">Products</menuitem>
    </item>
    <item link="sai" name="ch3. Special Autonomic Industries" movie="SpecialAI">
        <menuitem link="sai_overview">Overview</menuitem>
        <menuitem link="sai_archive">Works Archive</menuitem>
        <menuitem link="sai_showroom">Showroom</menuitem>
        <menuitem link="sai_skills">Core Skills & Serices</menuitem>
        <menuitem link="sai_products">Products</menuitem>
        <menuitem link="sai_infrastructure">Infrastructure</menuitem>
    </item>
    <item link="iacs" name="ch4. Interesting And Cool Stuff"></item>
</menu>

И вот код, куда я загружаю файл XML:

var xmlFile:String = "menu.xml";
var menu:XML = new XML();
// ignores spaces and declaration in XML file, improves parsing of XML file
menu.ignoreWhite = true;

// create 'mainMenu' (type Menu), holds all functions related to menu and constructs array from XML
var mainMenu:Menu = new Menu();

// event handler triggerred when XML is completely loaded
menu.onLoad = function(success:Boolean) {

    if (success) {
        // passes XML file to buildMenu function in Menu class to build menu Array
        mainMenu.buildMenu(this);
        // passes 'mainMenu' (type Menu) to buildScene function, builds whole scene with individual MC's
        buildScene(mainMenu);

        // set depth of navigation to top of pile, in order for buttons to move behind the navigation, instead of on top of it
        _root.navigation.swapDepths(theScene);
    }
}

// load XML file
menu.load(xmlFile);

Кто-нибудь возражает дать мне указание на подводные камни, которые я пропустил?

С уважением и TIA

// РЕДАКТИРОВАТЬ src для функции buildMenu ()

// build multi-dimensional array from XML file received
    function buildMenu(menu:XML):Void {

        // determine how many chambers there are now
        menuArray = menu.firstChild.childNodes;
        var length:Number = menuArray.length;

        // dynamic according to number of chambers
        for (var i:Number = 0; i < length; i++) {
            var sublength:Number = menuArray[i].childNodes.length;
            var submenu:Array = new Array();

            // chamber name and link
            var xmlNode:XMLNode = menuArray[i];
            submenu["name"] = xmlNode.attributes.name;
            submenu["link"] = xmlNode.attributes.link;
            submenu["movie"] = xmlNode.attributes.movie;

            trace(submenu["name"]);

            // create sub-item for each chamber
            for (var j:Number = 0; j < sublength; j++) {
                var subXmlNode:XMLNode = xmlNode.childNodes[j];

                var item:Array = new Array(subXmlNode.firstChild, subXmlNode.attributes.link);
                submenu.push(item);
            }

            // create an entry for each chamber
            mainmenu.push(submenu);
        }
    }

// РЕДАКТИРОВАТЬ 2

Сейчас я запускаю этот файл с удаленного сервера (Linux box), но все еще только первый элемент загружается в Windows, без братьев и сестер. На Mac все загружается нормально, я зашел в тупик, мой крайний срок (черновик № 2) для этого - около 12 часов, и мне все еще нужно отдохнуть ночью. У кого-нибудь есть малейшие предположения, что это может быть? Любые указатели или советы будут сердечно приняты. URL

С уважением и TIA.

// РЕДАКТИРОВАТЬ 3

Я сейчас отлаживаю в Windows и обнаружил, что файл XML в конце концов полностью загружается. Странно то, что я отслеживаю значения _xи _yзначения всех фрагментов ролика, и все они постоянно меняются до приемлемого значения, но на сцене все еще виден только первый добавленный фрагмент ролика. Я проследил их глубины, которые на самом деле различаются, они включены (отслежены), они _visible(также отслежены), все отлично работает на Mac, за исключением случаев, когда я запускаю его в Windows, поэтому ясно, что Flash Player в Windows делает что-то неожиданно, кто-нибудь сталкивался с этим раньше?

Я был бы очень признателен за помощь.

С уважением и TIA.

13.10.2009 11:07:13
Пожалуйста, предоставьте исходный код для mainMenu.buildMenu (это);
Rodrigo 13.10.2009 11:40:01
3 ОТВЕТА
РЕШЕНИЕ

Я не уверен, что это является причиной вашей проблемы, но две вещи, на которые нужно обратить внимание в XML, это то, что & в "Базовых навыках и услугах" делает XML недействительным. Flash довольно прощает подобные вещи, но более строгий анализатор сообщает об этом как об ошибке. Например, Firefox не будет отображать этот XML и сообщать об «ошибке синтаксического анализа XML: неправильно сформирован» со ссылкой на позицию символа &. Попытка открыть файл XML в Firefox (или IE) часто является быстрым способом обнаружения ошибок в XML, о которых Flash / AS2 не сообщает.

Таким образом, чтобы использовать & в тексте, текст должен быть помечен как CDATA, чтобы он был действительным XML:

<menuitem link="sai_skills"><![CDATA[Core Skills & Services]]></menuitem>

Еще одна вещь, на которую нужно обратить внимание (опять же, это может не быть причиной вашей проблемы), это убедиться, что файл действительно сохранен в формате UTF-8. Недостаточно иметь кодировку = "UTF-8" в самом XML, файл также необходимо сохранить как UTF-8. Это довольно обычная ошибка, но поскольку вы говорите, что используете Dreamweaver, я бы предположил, что Dreamweaver обычно заботится об этом аспекте.

0
13.10.2009 21:16:48
О, да, я изменил это на Базовые навыки и услуги. Кроме того, я проверил Dreamweaver и состояние Prefs, которое должно сохранять все новые файлы как Unicode 5.0 UTF-8. Сейчас я выполняю это на сервере Linux удаленно, но на компьютерах с Windows все еще отображается только первый элемент «ch1. Virleo Group Holdings». Я не понимаю это
Anriëtte Myburgh 13.10.2009 23:17:50

Какой редактор вы используете для файла XML? Windows и Mac имеют разные символы окончания строки.

0
13.10.2009 11:18:08
Я использую Dreamweaver CS4 и, насколько мне известно, символы конца строки установлены в формате Windows.
Anriëtte Myburgh 13.10.2009 11:20:41
Знаете ли вы короткий метод для исправления неправильных символов конца строки?
Anriëtte Myburgh 13.10.2009 11:24:42
Ну, теперь я отредактировал файл на компьютере с Windows в Dreamweaver CS3, удалил все новые строки и вручную вставил их обратно. Тем не менее, Flash загружает только один элемент, но не остальных братьев и сестер.
Anriëtte Myburgh 13.10.2009 11:30:35

ты пробовал

menu.ignoreWhite = false;

Windows использует CR + LF для пометки новой строки, Mac использует LF

0
13.10.2009 11:20:56
Я не могу, это полностью скинет мой анализ.
Anriëtte Myburgh 13.10.2009 11:25:33
Вы сами разбираете xml? почему вы не используете методы API?
Amarghosh 13.10.2009 11:30:07
Извините, это единственный способ, к которому я привык. Какие API вы рекомендуете?
Anriëtte Myburgh 13.10.2009 11:52:47
ignoreWhiteигнорируется только незначительный пробел (т.е. пробел между концом одного тега и началом другого). Это вряд ли вызовет у вас проблемы, если вы включите его.
Richard Szalay 13.10.2009 12:14:11
Ну, я попробовал, а потом ничего не загрузилось, как Mac, так и Windows.
Anriëtte Myburgh 13.10.2009 12:41:26