开发者

Pull certain elements from xml as needed

I'm a little stuck and could really use some help. I posted a question on here previously, but I figured out what the issue was there... sort of. Not completely, but enough to know I may be in over my head trying to adjust it.

So now I'm asking if anyone has heart enough to tell me how I would take this code and fix it so that I can include swf and image files only when I need them. They won't always be in every node:

var pageXMLLoader = new URLLoader();
pageXMLLoader.load(new URLRequest("scripts/xml/content.xml"));
pageXMLLoader.addEventListener(Event.COMPLETE, pageXMLLoaded);
//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(pageXMLLoader.data);
    pageXML = new XML(e.target.data);

}


// Set page number variable
var pageNumber:uint;

mcContent.y = 30;

// 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(contentTxt);
            pageContent.addChild(headingTxt);

            break;

        case "navBtn1" :
            trace(e.currentTarget.name);
            pageNumber = 2;

            mcContent.removeChildAt(0);

            mcContent.addChildAt(pageContent,0);

            pageContent.addChild(contentTxt);
            pageContent.addChild(headingTxt);

            break;

        case "navBtn2" :
            ... 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 pa开发者_开发问答ge content
            contentTxt.htmlText = page.content;
            contentRTopTxt.htmlText = page.contenttr;
            contentRBottomTxt.htmlText = page.contentbr;

            // Exit the loop
            break;
        }
    } // < /For Loop >


I got lost in your code, but here is a quick example on how you could retrieve the correct page using E4X (var pageContent : XML = pageXML.pages.page.(@pagenumber == 1)[0];) and also a check if image or SWF exists.

Test.as

package
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;

    public class TestXMLPages extends Sprite
    {

        private var pageXML : XML;

        private var swfContainer : Sprite = new Sprite();
        private var imgContainer : Sprite = new Sprite();
        private var imgLoader : Loader = new Loader();
        private var swfLoader : Loader = new Loader();

        public function TestXMLPages()
        {
            super();

            var pageXMLLoader : URLLoader = new URLLoader();
                pageXMLLoader.load(new URLRequest("xml/content.xml"));
                pageXMLLoader.addEventListener(Event.COMPLETE, pageXMLLoaded);
        }

        private function pageXMLLoaded(e : Event) : void
        {
            pageXML = new XML(e.target.data);

            // select page with pagenumber 1
            var pageContent : XML = pageXML.pages.page.(@pagenumber == 1)[0];

            // has image?
            if(pageContent.image.length() > 0)
                trace("add image!")

            // has swf?
            if(pageContent.swfURL.length() > 0)
                trace("add swf!")

            trace(pageContent.toXMLString())
        }
    }
}

content.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>

        <page pagenumber="2">

            <title><![CDATA[<h1>Page #2</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>

        </page>

    </pages>

</site>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜