首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flash在Windows和Mac上加载xml的方式不同

Flash在Windows和Mac上加载xml的方式不同
EN

Stack Overflow用户
提问于 2009-10-13 11:07:13
回答 3查看 715关注 0票数 0

我正在使用AS2.0加载一个xml文件。在Mac上,所有元素都完全加载,但只要我在Windows上运行它,就只加载item类型的第一个元素。当我在苹果电脑上运行它时,所有的item都是加载的,所有的Flash都是单独的按钮。当我在Windows上运行它时,只出现一个按钮,它的名字是ch1。维珍集团控股有限公司。其他的item元素都没有加载。我没有Windows版本的Flash可用,所以我不能调试。

有没有其他方法可以确定这是否与XML文件加载不完整或与电影剪辑的深度有关?这是URL

下面是我的XML:

代码语言:javascript
复制
<?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文件的代码:

代码语言:javascript
复制
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

//编辑buildMenu()函数的源

代码语言:javascript
复制
// 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机器)运行这个文件,但仍然只有第一个元素加载到Windows上,没有兄弟元素。在Mac上,一切都很好,我走进了死胡同,我的最后期限(草案#2)是大约12小时后,我仍然需要一夜的休息。有人知道这会是什么样子吗?任何建议或建议都将被诚恳地接受。The url

致以问候和TIA。

//编辑3

我现在正在Windows中调试,并发现XML文件最终确实会完全加载。奇怪的是,我跟踪所有电影剪辑的_x_y值,并且都不断地更改为可接受的值,但仍然只有第一个添加的电影剪辑在舞台上可见。我已经跟踪了他们的深度,实际上是不同的,他们是启用(跟踪),他们是_visible (跟踪也),一切工作在Mac上完美,除了当我在视窗上运行它,所以很明显,闪光播放器在视窗中做一些意想不到的事情,有人遇到过这个吗?

如果能帮上忙我会很感激的。

致以问候和TIA。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-13 21:16:48

我不确定这是不是问题的原因,但是在XML中需要注意的两件事是,"Core Skills & Services“中的&使XML无效。Flash对这类事情相当宽宏大量,但更严格的解析器会将其报告为错误。例如,Firefox不会显示该XML,并根据&的位置报告"XML Parsing Error: not well- For“。尝试在Firefox (或IE)中打开XML文件通常是发现Flash/AS2不报告的XML错误的一种快速方法。

因此,要在文本中使用&,文本需要标记为CDATA才能成为有效的XML:

代码语言:javascript
复制
<menuitem link="sai_skills"><![CDATA[Core Skills & Services]]></menuitem>

另一件需要注意的事情(同样,这可能不是问题的原因)是确保文件实际上是以UTF-8格式保存的。在XML本身中使用encoding=" UTF-8“是不够的,还需要将文件保存为UTF-8。这是一个非常常见的错误,但当您说您使用Dreamweaver时,我认为Dreamweaver通常会处理这一方面。

票数 0
EN

Stack Overflow用户

发布于 2009-10-13 11:18:08

你使用什么编辑器来编辑XML文件?Windows和Mac有不同的行尾字符。

票数 0
EN

Stack Overflow用户

发布于 2009-10-13 11:20:56

你试过了吗

代码语言:javascript
复制
menu.ignoreWhite = false;

Windows使用CR+LF标记换行符,Mac使用LF

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1559556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档