[F8 AS2] Accessing Nested nodes in XML

This is a continuation of the following post:

http://www.kirupa.com/forum/showthread.php?t=284487

I just wanted to conclude that I was able to figure everything out by using this forum. Thank you to Kirupa for providing this great resource.

I am posting the code below to help anyone that is having problems accessing XML data in a menu style application. It turns out that “for loops” are the greatest thing ever invented. Once I understood the principles of the “for loop” and “XML structure”, almost everything fell into place. Everything else was answered by this forum and Kirupas’ tutorials.

_parent.projectsMovie._visible = false;
var item_spacing = 34;
var item_count = 0;
var item2_count = 0;
var item3_count = 0;
var project:XMLNode;
var url:XMLNode;
//set depth of scroll bar movieclips
maskedView.swapDepths(Math.round(this._xscale)+5000);
btnUp.swapDepths(Math.round(this._xscale)+4000);
btnDown.swapDepths(Math.round(this._xscale)+3000);
scrollFace.swapDepths(Math.round(this._xscale)+2000);
scrollTrack.swapDepths(Math.round(this._xscale)+1000);
//function to delete thumb_vessel movieclip
function delete_thumbs() {
    removeMovieClip("thumb_vessel");
    item2_count = 0;
}    
//function to create empty thumb_vessel movieclip
function create_thumbs() {
    this.createEmptyMovieClip("thumb_vessel", 100);
}
//function to create empty contentMain movieclip
function create_buttons() {
    this.createEmptyMovieClip("contentMain", 0);
    contentMain.setMask(maskedView);
    contentMain._x = 595;
    contentMain._y = 95;
}
var x:XML = new XML();
x.ignoreWhite = true;
x.onLoad = function() {
    var rootNode:XMLNode = this.firstChild;
    create_buttons();
    for (i=0; i<rootNode.childNodes.length; i++) {
        project = rootNode.childNodes*;
        var b = contentMain.attachMovie("button_mc", "button"+item_count, item_count);
        b._y = item_count*item_spacing;
        b._y = Math.floor(i/1)*item_spacing;
        item_count++;
        b.name_txt.text = project.attributes.name;
        b.school_txt.text = project.attributes.school;
        b.onRollOver = function() {
            this.name_txt.textColor = 0xFFFF00;
            this.school_txt.textColor = 0xFFFF00;
            var my_bkgd:Color = new Color(this.bkgd_mc);
            my_bkgd.setRGB(0x666666);
            var my_border:Color = new Color(this.border_mc);
            my_border.setRGB(0xB5B5B5);
        }
        b.onRollOut = function() {
            this.name_txt.textColor = 0x000000;
            this.school_txt.textColor = 0x000000;
            var my_bkgd:Color = new Color(this.bkgd_mc);
            my_bkgd.setRGB(0xFFFFFF);
            var my_border:Color = new Color(this.border_mc);
            my_border.setRGB(0x000000);
        }
        b.onPress = function() {
            whoIsOn.name_txt.textColor = 0x000000;
            whoIsOn.school_txt.textColor = 0x000000;
            var whoIsOn_my_bkgd:Color = new Color(whoIsOn.bkgd_mc);
            whoIsOn_my_bkgd.setRGB(0xFFFFFF);
            var whoIsOn_my_border:Color = new Color(whoIsOn.border_mc);
            whoIsOn_my_border.setRGB(0x000000);
            whoIsOn.enabled = true;
            this.name_txt.textColor = 0xFFFF00;
            this.school_txt.textColor = 0xFFFF00;
            var my_bkgd:Color = new Color(this.bkgd_mc);
            my_bkgd.setRGB(0x000000);
            var my_border:Color = new Color(this.border_mc);
            my_border.setRGB(0x000000);
            var currBtn:Number = this.getDepth();
            delete_thumbs();
            create_thumbs();
            for(j=0; j<rootNode.firstChild.childNodes.length; j++);
                project2= rootNode.childNodes[currBtn];
                var urls:Number = project2.firstChild.childNodes.length;
                for (p=0; p<urls; p++) {
                    var url:XMLNode = project2.firstChild.childNodes[p];
                    var t = thumb_vessel.attachMovie("thumb_mc","thumb"+item2_count, item2_count);
                    t.html.text = url.attributes.html;
                    t.newWin.text = item3_count;
                    t.height.text = url.attributes.height;
                    t.width.text = url.attributes.width;
                    item3_count++;
                    if(url.attributes.quadrant == 1) {
                        t._x = 205;
                        t._y = 65;
                    } else if(url.attributes.quadrant == 2) {
                        t._x = 335;
                        t._y = 65;
                    } else if(url.attributes.quadrant == 3) {
                        t._x = 465;
                        t._y = 65;
                    } else if(url.attributes.quadrant == 4) {
                        t._x = 205;
                        t._y = 195;
                    } else if(url.attributes.quadrant == 5) {
                        t._x = 335;
                        t._y = 195;
                    } else if(url.attributes.quadrant == 6) {
                        t._x = 465;
                        t._y = 195;
                    } else if(url.attributes.quadrant == 7) {
                        t._x = 205;
                        t._y = 325;
                    } else if(url.attributes.quadrant == 8) {
                        t._x = 335;
                        t._y = 325;
                    } else if(url.attributes.quadrant == 9) {
                        t._x = 465;
                        t._y = 325;
                    }
                    t.thumb_holder.loadMovie(url.attributes.thumb);
                    t.onRollOver = function() {
                        this.swapDepths(Math.round(this._xscale)+100);
                        var thumb_brdr:Color = new Color(this.thumb_border);
                        thumb_brdr.setRGB(0xFFFF00);
                    }
                    t.onRollOut = function() {
                        var thumb_brdr:Color = new Color(this.thumb_border);
                        thumb_brdr.setRGB(0x000000);
                    }
                    t.onRelease = function() {
                        var html:String = this.html.text;
                        var newWin:String = this.newWin.text;
                        var height:String = this.height.text;
                        var width:String = this.width.text;
                        getURL("javascript:openNewWindow('" + String(html) + "','newWin" + String(newWin) + "','height=" + String(height) + ",width=" + String(width) + ",toolbar=no,menubar=no,directories=no,location=no,scrollbars=no,resizable=no,top=0,left=0,margin=0')");
                    }
                    item2_count++;
                }
        }
        b.onRelease = function() {
            this.enabled = false;
            whoIsOn = this;
        }
    }
    scrolling = function () {
    var scrollHeight:Number = scrollTrack._height;
    var contentHeight:Number = contentMain._height;
    var scrollFaceHeight:Number = scrollFace._height;
    var maskHeight:Number = maskedView._height;
    var initPosition:Number = scrollFace._y=scrollTrack._y;
    var initContentPos:Number = contentMain._y;
    var finalContentPos:Number = maskHeight-contentHeight+initContentPos;
    var left:Number = scrollTrack._x;
    var top:Number = scrollTrack._y;
    var right:Number = scrollTrack._x;
    var bottom:Number = scrollTrack._height-scrollFaceHeight+scrollTrack._y;
    var dy:Number = 0;
    var speed:Number = 10;
    var moveVal:Number = (contentHeight-maskHeight)/(scrollHeight-scrollFaceHeight);
    
    scrollFace.onPress = function() {
        var currPos:Number = this._y;
        startDrag(this, false, left, top, right, bottom);
        this.onMouseMove = function() {
            dy = Math.abs(initPosition-this._y);
            contentMain._y = Math.round(dy*-1*moveVal+initContentPos);
        };
    };
    scrollFace.onMouseUp = function() {
        stopDrag();
        delete this.onMouseMove;
    };
    btnUp.onPress = function() {
        this.onEnterFrame = function() {
            if (contentMain._y+speed<maskedView._y) {
                if (scrollFace._y<=top) {
                    scrollFace._y = top;
                } else {
                    scrollFace._y -= speed/moveVal;
                }
                contentMain._y += speed;
            } else {
                scrollFace._y = top;
                contentMain._y = maskedView._y;
                delete this.onEnterFrame;
            }
        };
    };
    btnUp.onDragOut = function() {
        delete this.onEnterFrame;
    };
    btnUp.onRelease = function() {
        delete this.onEnterFrame;
    };
    btnDown.onPress = function() {
        this.onEnterFrame = function() {
            if (contentMain._y-speed>finalContentPos) {
                if (scrollFace._y>=bottom) {
                    scrollFace._y = bottom;
                } else {
                    scrollFace._y += speed/moveVal;
                }
                contentMain._y -= speed;
            } else {
                scrollFace._y = bottom;
                contentMain._y = finalContentPos;
                delete this.onEnterFrame;
            }
        };
    };
    btnDown.onRelease = function() {
        delete this.onEnterFrame;
    };
    btnDown.onDragOut = function() {
        delete this.onEnterFrame;
    };
    
    if (contentHeight<maskHeight) {
        scrollFace._visible = false;
        btnUp.enabled = false;
        btnDown.enabled = false;
    } else {
        scrollFace._visible = true;
        btnUp.enabled = true;
        btnDown.enabled = true;
    }
};
scrolling();
}
x.load("projects.xml");
stop();

If anyone wants to see this code in action check out:
http://www.greekink.com click on “PROJECTS”.
Good Luck!