【发布时间】:2011-09-17 04:32:04
【问题描述】:
好的,这里是:我要做的是创建一个多维数组,它将根据单击的按钮从 xml 文件中提取文本、swfs 和/或图像。
我不明白的是如何从文件中提取 swf 或图像文件,就像我使用文本一样。说实话,我完全迷路了,真的可以使用一些帮助来解决这个问题。我需要根据单击的按钮从 xml 中提取文本和图像或 swf 文件,我试图将它们放在一起,但我让自己头疼,试图了解我哪里出错了。
var pageXML:XML;
//Load the XML file.
var pageXMLLoader = new URLLoader();
pageXMLLoader.load(new URLRequest("scripts/xml/content.xml"));
pageXMLLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlIOErrorHandler);
pageXMLLoader.addEventListener(Event.COMPLETE, pageXMLLoaded);
// Intro page variables for title
var swfContainer:Sprite = new Sprite();
var imgContainer:Sprite = new Sprite();
var imgLoader:Loader = new Loader();
var swfLoader:Loader = new Loader();
//This function is called when the XML file is loaded
function pageXMLLoaded(e:Event):void {
//Create a new XML object from the loaded XML data
pageXML = new XML(e.target.data);
imgLoader.load(new URLRequest(pageXML.pages.page.image));
swfLoader.load(new URLRequest(pageXML.pages.page.swfURL));
trace(pageXML.pages.page.image);
trace(pageXML.pages.page.swfURL);
}
// Choose page transition function
function choosePageTransition(e:MouseEvent):void {
var pageNumber:uint;
mcContent.y = 30; // Why do I need to reset the y position each time?
// Set up if for mouse click
if (e.type == MouseEvent.CLICK) {
// Switch based on target name
switch (e.currentTarget.name) {
case "navBtn0" :
trace(e.currentTarget.name);
pageNumber = 1;
mcContent.removeChildAt(0);
mcContent.addChildAt(pageContent,0);
pageContent.addChild(contentRBottomTxt);
pageContent.addChild(contentRTopTxt);
pageContent.addChild(contentTxt);
pageContent.addChild(headingTxt);
break;
case "navBtn1" :
trace(e.currentTarget.name);
pageNumber = 2;
mcContent.removeChildAt(0);
mcContent.addChildAt(pageContent,0);
pageContent.addChild(contentRBottomTxt);
pageContent.addChild(contentRTopTxt);
pageContent.addChild(contentTxt);
pageContent.addChild(headingTxt);
break;
case "navBtn2" :
trace(e.currentTarget.name);
pageNumber = 3;
mcContent.removeChildAt(0);
mcContent.addChildAt(pageContent,0);
pageContent.addChild(contentRBottomTxt);
pageContent.addChild(contentRTopTxt);
pageContent.addChild(contentTxt);
pageContent.addChild(headingTxt);
break;
... code shortened
}
// Loop through the XML file
for each (var page:XML in pageXML.pages.page) {
// "page.@pagenumber" points to "pagenumber" in the XML file.
if (page.@ pagenumber == pageNumber) {
// Set the title
headingTxt.htmlText = page.title;
// Set the page content
contentTxt.htmlText = page.content;
contentRTopTxt.htmlText = page.contenttr;
contentRBottomTxt.htmlText = page.contentbr;
// Exit the loop
break;
}
} // < /For Loop >
} // < /If Statement >
} // < /Function >
我的 xml 文件看起来有点像这样(它很长,所以我会发布一个部分):
<?xml version="1.0" encoding="utf-8"?>
<site>
<!--<sitetitle><![CDATA[<strong>Transplant the Heart</strong>]]></sitetitle>-->
<pages>
<page pagenumber="1">
<title><![CDATA[<h1>Page #1</h1>]]></title>
<content><![CDATA[<p>Aliquam nec dui neque. Aenean rutrum suscipit turpis vel fringilla. </p>]]></content>
<contenttr><![CDATA[Cras non risus nisi. Nam tincidunt lacinia massa, vel interdum massa ultricies.]]></contenttr>
<contentbr><![CDATA[Aliquam erat volutpat. Etiam eget mauris ante, sit amet placerat tortor.]]></contentbr>
<image>imgs/png/titleLarge.png</image>
<swfURL>transplantSpecialists.swf</swfURL>
</page>
</pages>
</site>
【问题讨论】:
-
我需要进一步澄清吗?
-
可能是您在编译/运行时遇到的错误?
-
我收到错误 #2044:未处理的 IOErrorEvent:。文本=错误 #2035:未找到 URL。我知道这与不正确的路径/文件名有关,问题是,我已经检查、重新检查并再次检查。我的文件的名称与写入的文件完全相同,并且它们位于指向的目录中。有人说它可能指向一个不存在的文件,但我看不出它可能在哪里。
标签: actionscript-3 multidimensional-array nested-loops