Morning all,
I switched from screenLayer:Sprite to screenLayer:MovieClip and that seemd to clear things up. Now I’m left with my original big problem… no errors but my listener cant hear the event and I am at the limit of my miniscule understanding soooooo here’s my code… the listener that’s not hearing is document>screens.menuScreen.buttonToIntroScreen.addEventListener(“introScreen”,toScreenHandler);
look for the [COLOR=DarkOrange]orange[/COLOR] text
document:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import traceDL;
public class Document extends MovieClip
{
public var loadingProgress:LoadingProgress;
public static var screens:ScreenHandler = new ScreenHandler();
var menuScreen:MenuScreen;
var introScreen:IntroScreen=new IntroScreen;
public function Document():void
{
loadingProgress = new LoadingProgress();
loadingProgress.x = this.parent.width/2;
loadingProgress.y = this.parent.height/2;
addChild( loadingProgress );
loaderInfo.addEventListener( Event.COMPLETE, onCompletelyDownloaded );
loaderInfo.addEventListener( ProgressEvent.PROGRESS, onProgressMade );
//this.addChild(screens);
//Application.screens.switchTo("SelectedScreen");
//Application.screens.switchTo("SelectedScreen", false);
}
public function onProgressMade( progressEvent:ProgressEvent ):void
{
loadingProgress.setValue( Math.floor( 100 * loaderInfo.bytesLoaded / loaderInfo.bytesTotal ) );
}
public function onCompletelyDownloaded( event:Event ):void
{ removeChild(loadingProgress);
gotoAndStop(3);
playGame();
}
public function playGame():void
{
var menuScreen:MenuScreen=new MenuScreen;
addChild(screens);//adding the screens(ScreenHandlerClass)
trace("screens children=" + screens.getChildAt(0));
screens.addChild(introScreen);//if i dont add here nothing shows up
introScreen.buttonToMenuScreen.addEventListener("menuScreen",toScreenHandler);//listening for the buttons event
[COLOR=DarkOrange] screens.menuScreen.buttonToIntroScreen.addEventListener("introScreen",toScreenHandler);[/COLOR]
//screens.screenLayer.menuScreen.buttonToIntroScreen.addEventListener("introScreen",toScreenHandler);
loaderInfo.removeEventListener( Event.COMPLETE, onCompletelyDownloaded );
loaderInfo.removeEventListener( Event.COMPLETE, onProgressMade );
}
public function toScreenHandler(evt:Event):void
{
//for (var i:uint = 0; i < screens.numChildren; i++)
// {
// trace (' | ' +i+'. name:' + screens.getChildAt(i).name + ' type:' + typeof (screens.getChildAt(i))+ ' ' + screens.getChildAt(i));
// }
trace("eventHeard");
screens.removeChild(introScreen);
var eventString:String=new String(evt.type);
trace(evt.type + "handleToMenuScreen");
screens.switchTo(eventString);
}
}
}
screenHandler:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
public class ScreenHandler extends MovieClip{
public var menuScreen:MenuScreen=new MenuScreen;///all these were private
private var playScreen:PlayScreen;
private var mBase:MBase;
private var asBase:AsBase;
private var introScreen:IntroScreen;
private var newScreenName:String = "";
//private var oldScreenName:String ="introScreen";
public var screenLayer:MovieClip = new MovieClip();
public function ScreenHandler()
{
//trace("screenHandler");
this.addChild(screenLayer);
//for (var i:uint = 0; i < numChildren; i++)
// {
// trace (' | ' +i+'. name:' + getChildAt(i).name + ' type:' + typeof (getChildAt(i))+ ' ' + getChildAt(i));
// }
}
public function switchTo(screenName:String):void
{
//trace("switchTo()"+ screenName);
newScreenName = screenName;
//trace(newScreenName);
switchScreens();
}
private function switchScreens():void
{
//trace("switchScreens()");
//trace("screenLayer children" + screenLayer.numChildren);
removeOldScreen();
makeNewScreen();
}
private function removeOldScreen():void
{
if(screenLayer.numChildren>0)
{
//trace(screenLayer.getChildIndex());
var oldScreen:MovieClip;
oldScreen = screenLayer.getChildAt(0) as MovieClip;
//trace( oldScreen + "oldScreen is");
screenLayer.removeChild(oldScreen);
}
}
private function makeNewScreen():void
{
//trace("makeNewScreen");
//trace(newScreenName);
switch(newScreenName)
{
case "introScreen":
introScreen = new IntroScreen();
trace("SwitchStatementIntroScreen");
screenLayer.addChild(introScreen);
break;
case "menuScreen":
menuScreen = new MenuScreen();
screenLayer.addChild(menuScreen);
trace("SwitchStatementMenuScreen")
break;
case "playScreen":
playScreen = new PlayScreen();
screenLayer.addChild(playScreen);
break;
case "asBase":
asBase = new AsBase();
screenLayer.addChild(asBase);
break;
case "mBase":
mBase = new MBase();
screenLayer.addChild(mBase);
break;
default:
trace("adding IntroScreen default");
introScreen = new IntroScreen();
screenLayer.addChild(introScreen);
break;
}
newScreenName = "";
}
}
}
menuScreen:
package
{
import flash.display.MovieClip;
public class MenuScreen extends MovieClip
{
var buttonToIntroScreen:Button1=new Button1("introScreen")
public function MenuScreen():void
{
buttonToIntroScreen.x=100;
buttonToIntroScreen.y=100;
addChild(buttonToIntroScreen);
//trace("menuScreenHere");
//needs buttons that effect :fuel repair goods
//needs to show current weight and efficiency
//needs to show btrace("");ank account
//needs to choose route
//needs a button that starts the level
//start level x
}
}
}
button1:
package
{
import flash.display.*;
import flash.events.*
public class Button1 extends MovieClip
{
var fireString:String = "";
var fStringHolder:String ="";
//Since you will recreate the event/folder with information each time the event happens,
//there is no use holding a reference to it.
//var eventFolder:Event//=new Event(fireEvent);mayBe move this part into thefunction;
public function Button1 (fireEvent:String):void
{
//var fString:String=fireEvent;
fireString = fireEvent;
fStringHolder=fireEvent;
//trace(fireString + "is fireString");
var button:SimpleButton= new SimpleButton();
button.x=20;
button.y=20;
button.upState= createCircle(0x00ff00,15);
button.overState= createCircle(0xffffff,16);
button.downState= createCircle(0xcccccc,15);
button.hitTestState= createCircle(0x00ff00,15);
button.addEventListener(MouseEvent.CLICK,handleClick);
addChild(button);
}
public function createCircle(color:uint,radius:Number):Shape
{
var circle:Shape = new Shape();
circle.graphics.lineStyle(1,0x000000);
circle.graphics.beginFill(color);
circle.graphics.drawCircle(0,0,radius);
circle.graphics.endFill();
return circle;
}
private function handleClick(event:MouseEvent):void
{
trace("handleClick" + fireString);
//if(this.parent.parent != null)
// {
// var parentObj:Object = this.parent.parent.parent as Object;
// //parentObj.screens.switchTo(fireString);
// //Document.screens.switchTo(fireString);
//
// }
//trace("handleClick");
// trace(fireString);
dispatchEvent(new Event(fireString));
//trace("event Dispatched");
}
}
}