我正在使用AS2.0加载一个xml文件。在Mac上,所有元素都完全加载,但只要我在Windows上运行它,就只加载item类型的第一个元素。当我在苹果电脑上运行它时,所有的item都是加载的,所有的Flash都是单独的按钮。当我在Windows上运行它时,只出现一个按钮,它的名字是ch1。维珍集团控股有限公司。其他的item元素都没有加载。我没有Windows版本的Flash可用,所以我不能调试。
有没有其他方法可以确定这是否与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
//编辑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机器)运行这个文件,但仍然只有第一个元素加载到Windows上,没有兄弟元素。在Mac上,一切都很好,我走进了死胡同,我的最后期限(草案#2)是大约12小时后,我仍然需要一夜的休息。有人知道这会是什么样子吗?任何建议或建议都将被诚恳地接受。The url
致以问候和TIA。
//编辑3
我现在正在Windows中调试,并发现XML文件最终确实会完全加载。奇怪的是,我跟踪所有电影剪辑的_x和_y值,并且都不断地更改为可接受的值,但仍然只有第一个添加的电影剪辑在舞台上可见。我已经跟踪了他们的深度,实际上是不同的,他们是启用(跟踪),他们是_visible (跟踪也),一切工作在Mac上完美,除了当我在视窗上运行它,所以很明显,闪光播放器在视窗中做一些意想不到的事情,有人遇到过这个吗?
如果能帮上忙我会很感激的。
致以问候和TIA。
发布于 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:
<menuitem link="sai_skills"><![CDATA[Core Skills & Services]]></menuitem>另一件需要注意的事情(同样,这可能不是问题的原因)是确保文件实际上是以UTF-8格式保存的。在XML本身中使用encoding=" UTF-8“是不够的,还需要将文件保存为UTF-8。这是一个非常常见的错误,但当您说您使用Dreamweaver时,我认为Dreamweaver通常会处理这一方面。
发布于 2009-10-13 11:18:08
你使用什么编辑器来编辑XML文件?Windows和Mac有不同的行尾字符。
发布于 2009-10-13 11:20:56
你试过了吗
menu.ignoreWhite = false;Windows使用CR+LF标记换行符,Mac使用LF
https://stackoverflow.com/questions/1559556
复制相似问题