【问题标题】:Multidimensional array, loop of buttons, and loading swf/img/txt from xml多维数组、按钮循环以及从 xml 加载 swf/img/txt
【发布时间】: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


【解决方案1】:

你确定你有正确的结构吗?像这样的......

project folder
  | main.swf
  | scripts/
    | xml/
      | content.xml
  | imgs/
    | png/
      | titleLarge.png
  | transplantSpecialists.swf

【讨论】:

  • 是的,这就是我的结构。太奇怪了。我不确定发生了什么。
  • 我相信,它试图从实际上没有 swf 和/或图像文件的节点之一拉取 swf。所以它抛出了那个错误。所以我要做的是试着找出你在我的另一个问题上提供的代码,然后把它拼凑起来,这样它就可以工作了。我可能对 AS 太陌生,无法尝试这种类型的事情,但我必须学习一些时间,嗯。
猜你喜欢
  • 2016-02-09
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 2015-08-10
  • 2017-10-09
  • 1970-01-01
相关资源
最近更新 更多