Well, it's not really about adding or removing children. The real issue is about your development perspective.
First of all, you're building a menu, so let the menu be just that, an Object that sends signals to inform what button has been clicked.
After that, you need some form of container that will display the relevant screen when receiving the menu's message.
This container can contain three screens , Branding , Web & Print.
You can set all this screens visible property to false.
When the container receives the menu information , it sets the selected screen visible property to true and the other screens to false.
This way , you don't have to keep adding or removing children, trying to keep track of your DisplayList structure.
Use Event Dispatching for the menu.
Anyway, here's a rough example, it's not complete but should give you an idea...
public class Menu extends Sprite
{
//A basic button instance
private var button:Sprite = new Sprite();
//The dispatcher dispatches & listen to events
//it acts as a connector between your container
//and the menu
private var dispatcher:EventDispatcher;
//The menu will be created in the Container
//the dispatcher will be passed as a parameter
//this is the connection between the two classes
//Please note that there are other ways to achieve
//a similar result..
public function Menu (dispatcher:EventDispatcher)
{
//assign the dispatcher instantiated in the container
//to a variable in order to manipulate it in this class
this.dispatcher = dispatcher;
//takes care of creating the menu
createMenu();
}
private function clickHandler( event:MouseEvent):void
{
//each time a button is click an event is dispatched
//that contains the name of the clicked button
dispatcher.dispatchEvent
( new MenuEvent(event.currentTarget.name));
}
private function createMenu():void
{
//here you load the XML, create the buttons
// and add the event listeners
//this is just an example for the logic
//it's irrelevant since the button will
//be created from the XML
button.name = "Branding";
addChild( button );
button.addEventListener
( MouseEvent.CLICK , clickHandler );
}
}
public class Container extends Sprite
{
private var button:Sprite = new Sprite();
//Here we instantiate a dispatcher
private var dispatcher:EventDispatcher = new EventDispatcher;
private var menu:Menu;
//a basic screen instance that could contain
//all that has to do with Branding for instance
private var screen1:Sprite = new Sprite();
//etc...
public function Container ()
{
//The dispatcher is set to listen to the events
//dispatched in the Menu class
dispatcher.addEventListener( MenuEvent.MENU , eventListener );
screen1.visible = false;
//now the menu can be created
menu = new Menu( dispatcher);
addChild( menu );
}
private function eventListener( event:MenuEvent):void
{
//set all the screens visibility to false
//here...
//get the event name and react accordingly
//here you can implement a switch
switch(event.name)
{
case "Branding":
//show Branding screen
screen1.visible = true;
break;
//etc...
}
}
}
public class MenuEvent extends Event
{
public const MENU:String = "Menu Event";
public var name:String;
//Check custom events for the rest of the code...
//Do a Google search for custom events
//shouldn't be too difficult to find
}