External Navigation and OOP giving me huge problems

Hi everyone,

I am new to AS3 and OOP and have been trying to learn from a combination of books and videos though I keep running into brick walls.

Basically I am trying to create a simple game as part of my University course. I have four swfs (Index.swf, Main.swf, PupilsLogIn.swf and TeachersLogIn.swf).

Now, when you open index Main is automatically loaded. Main contains a logo and two buttons (pupils log in and teachers log in). When the user clicks either the corresponding swf is loaded. This contains a navigation bar which is contained in an external as file.

Because I wanted it to be as OOP as possible I thought it best to have one main navigation as a seperate class that could load and unload SWFs as approriate however the buttons within my external navigation.as wont ‘talk’ to my other classes (in specific they wont delete swfs or add them again). I assumed this was to do with referencing parents etc but I can’t seem to get anything to work.

Here’s the code of the external Navigation:

package Interaction // builds a navigation bar containing buttons
{
import flash.display.Sprite;
import flash.events.MouseEvent;

// import custom classes
import Loading.LoadXMLImage;
import Interaction.ScrolldownRollover;

public class Navigation extends Sprite
{
    private var file;
    private var img;
    private var xmlFile;
    
    public function Navigation()
    {
        file = "Images/NavigationImages/";
        xmlFile: "Images.xml";
        
        img = "Banner.png";
        var banner = new LoadXMLImage(xmlFile, file, img);
        addChildAt(banner, 0);
        banner.mouseEnabled = false;
        
        img = "BackBtn.png";
        var backBtn = new LoadXMLImage(xmlFile, file, img);
        addChild(backBtn);
        backBtn.name = "back";
        
        img = "MapBtn.png";
        var mapBtn = new LoadXMLImage(xmlFile, file, img);
        addChild(mapBtn);
        mapBtn.name = "map";
        
        img = "HelpBtn.png";
        var helpBtn = new LoadXMLImage(xmlFile, file, img);
        addChild(helpBtn);
        helpBtn.name = "help";
        
        img = "HomeBtn.png";
        var homeBtn = new LoadXMLImage(xmlFile, file, img);
        addChild(homeBtn);
        homeBtn.name = "home";
        
        helpBtn.addEventListener(MouseEvent.ROLL_OVER, onRollover);
        homeBtn.addEventListener(MouseEvent.ROLL_OVER, onRollover);
        backBtn.addEventListener(MouseEvent.ROLL_OVER, onRollover);
        backBtn.addEventListener(MouseEvent.CLICK, onBackClick);
        mapBtn.addEventListener(MouseEvent.ROLL_OVER, onRollover);
        
        function onRollover(event:MouseEvent):void 
        {
            if (event.target.name == "help") 
            {
                var helpOver = new ScrolldownRollover(helpBtn);
                addChild(helpOver);
            }
            
            if (event.target.name == "home") 
            {
                var homeOver = new ScrolldownRollover(homeBtn);
                addChild(homeOver);
            }
            
            if (event.target.name == "map") 
            {
                var mapOver = new ScrolldownRollover(mapBtn);
                addChild(mapOver);
            }
            
            if (event.target.name == "back") 
            {
                var backOver = new ScrolldownRollover(backBtn);
                addChild(backOver);
            }
        }
        
        function onBackClick(event:MouseEvent):void 
        {
        }
        
    }
    
}

}

and here’s the code of the Main.as which loads it:

package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;

// import custom classes
import Loading.LoadXMLImage;
import Loading.LoadSWF;
import Interaction.ScrolldownRollover;
import Interaction.Navigation;

public class Main extends MovieClip
{
    // set variables for this class
    private var file:String;
    private var img:String;
    private var xmlFile:String = "XML/Images.xml";
    private var container:MovieClip = new MovieClip;
    public var pupils:Sprite = new Sprite;
    public var swf;
    public var newSWF;
    
    public function Main()
    {
        file = "Images/IndexImages/";
        
        img = "LargeLogo.png";
        var logo = new LoadXMLImage(xmlFile, file, img);
        addChild(logo);
    
        img = "LogInTeachers.png";
        var teachers = new LoadXMLImage(xmlFile, file, img);
        addChild(teachers);
        teachers.buttonMode = true;
        
        img = "LogInPupils.png";
        pupils = new LoadXMLImage(xmlFile, file, img);
        addChild(pupils);
        pupils.buttonMode = true;
        
        file = "Images/CommonImages/";
        var nav = new Navigation();
        addChild(nav);
        nav.visible = false;
        
        pupils.addEventListener(MouseEvent.CLICK, onPupilsClick);
        teachers.addEventListener(MouseEvent.CLICK, onTeachersClick);
        
        function onPupilsClick(event:MouseEvent):void
        {
            removeAll();
            swf = "SignInPupils.swf";
            newSWF = new LoadSWF(swf);
            addChild(newSWF);
            nav.visible = true;
        }
        
        function onTeachersClick(event:MouseEvent):void
        {
            removeAll();
            swf = "SignInTeachers.swf";
            newSWF = new LoadSWF(swf);
            addChild(newSWF)
            newSWF.name = "SignInTeachers";
            nav.visible = true;
        }
        
        function removeAll():void
        {
            removeChild(pupils);
            removeChild(teachers);
            removeChild(logo);
        }
    }
}

}

…I’d really appreciate any help anyone could offer me and if you’d like to see it in action it’s here www.joegardner.co.uk/game/index.html

Thanks!