here’s the whole message:
1119: Access of possibly undefined property screenlayer through a reference with static type ScreenHandler.
here’s the order
document>screens>screenLayer>menuScreen>buttonToIntroScreen >
transmits “introScreen” >document layer is sposed to listen but when i try to add the listener i get the error, below are the pertinent bits O code:
in document: (check the underLined parts)
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;
this.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",handleToMenuScreen);//listening for the buttons event
[U]screens.screenlayer.MenuScreen.buttonToIntroScreen.addEventListener("introScreen",handleToMenuScreen);[/U]
loaderInfo.removeEventListener( Event.COMPLETE, onCompletelyDownloaded );
loaderInfo.removeEventListener( Event.COMPLETE, onProgressMade );
}
public function handleToMenuScreen(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);
}
}
}
in screenHandler:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
public class ScreenHandler extends Sprite{
public var menuScreen: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:Sprite = new Sprite();
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));
// }
}
in 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
}
}
}
in button1:
package
{
import flash.display.*;
import flash.events.*
public class Button1 extends Sprite
{
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");
//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");
}
}
}
any ideas???