Skip to main content
Known Participant
September 2, 2009
Answered

Acessing root stage.stageWidth

  • September 2, 2009
  • 2 replies
  • 1409 views

Hi,

So I'm trying to do a simple graph with rollover definitions. I have the graph on one layer in the root along with the definitions. On a hit testing MC I have the following:

var defbox:info = new info();
var mcName  = this.name;
var xPos =  (MovieClip(parent).stage.stageWidth)/2;
var yPos =  (MovieClip(parent).stage.stageHeight)/2;

this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);

function mouse_over(event:MouseEvent):void {
     this.removeEventListener(MouseEvent.MOUSE_OVER, mouse_over);
     this.addEventListener(MouseEvent.MOUSE_OUT, mouse_out);
     this.addChild(defbox);
     defbox.x = xPos-350;
     defbox.y = yPos-350;
     defbox.alpha = .95;
     defbox.title.title.text = MovieClip(parent).titles[mcName];
     defbox.def.text = MovieClip(parent).definitions[mcName];
     defbox.def.autoSize = "center";
     defbox.body.height = defbox.def.height + 25;
     defbox.title.y = defbox.body.y -8;
}

function mouse_out(event:MouseEvent):void {
     this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);
     this.removeEventListener(MouseEvent.MOUSE_OUT, mouse_out);
     this.removeChild(defbox);
}

The problem is that the loaded MC namely, defbox is does not appear at stage.width/2 (or height). It appears to be loading somewhere relative to the hit tester (the mc where the defbox mc is being loaded). I can't seem to access the root stage. I'm pretty sure that all the MCs registry points are normal. Any suggestions? Thanks.

This topic has been closed for replies.
Correct answer kglad
use:
var defbox:info = new info();
var mcName  = this.name;

var pt:Point = new Point(stage.stageWidth)/2,stage.stageHeight)/2);
var newpt:Point = this.globalToLocal(pt);
defbox.x=newpt.x;
defbox.y=newpt.y;

this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over); function mouse_over(event:MouseEvent):void {      this.removeEventListener(MouseEvent.MOUSE_OVER, mouse_over);      this.addEventListener(MouseEvent.MOUSE_OUT, mouse_out);      this.addChild(defbox);      defbox.x = xPos-350;      defbox.y = yPos-350;      defbox.alpha = .95;      defbox.title.title.text = MovieClip(parent).titles[mcName];      defbox.def.text = MovieClip(parent).definitions[mcName];      defbox.def.autoSize = "center";      defbox.body.height = defbox.def.height + 25;      defbox.title.y = defbox.body.y -8; } function mouse_out(event:MouseEvent):void {      this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);      this.removeEventListener(MouseEvent.MOUSE_OUT, mouse_out);      this.removeChild(defbox); }

The problem is that the loaded MC namely, defbox is does not appear at stage.width/2 (or height). It appears to be loading somewhere relative to the hit tester (the mc where the defbox mc is being loaded). I can't seem to access the root stage. I'm pretty sure that all the MCs registry points are normal. Any suggestions? Thanks.

2 replies

kglad
Community Expert
kgladCommunity ExpertCorrect answer
Community Expert
September 3, 2009
use:
var defbox:info = new info();
var mcName  = this.name;

var pt:Point = new Point(stage.stageWidth)/2,stage.stageHeight)/2);
var newpt:Point = this.globalToLocal(pt);
defbox.x=newpt.x;
defbox.y=newpt.y;

this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over); function mouse_over(event:MouseEvent):void {      this.removeEventListener(MouseEvent.MOUSE_OVER, mouse_over);      this.addEventListener(MouseEvent.MOUSE_OUT, mouse_out);      this.addChild(defbox);      defbox.x = xPos-350;      defbox.y = yPos-350;      defbox.alpha = .95;      defbox.title.title.text = MovieClip(parent).titles[mcName];      defbox.def.text = MovieClip(parent).definitions[mcName];      defbox.def.autoSize = "center";      defbox.body.height = defbox.def.height + 25;      defbox.title.y = defbox.body.y -8; } function mouse_out(event:MouseEvent):void {      this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);      this.removeEventListener(MouseEvent.MOUSE_OUT, mouse_out);      this.removeChild(defbox); }

The problem is that the loaded MC namely, defbox is does not appear at stage.width/2 (or height). It appears to be loading somewhere relative to the hit tester (the mc where the defbox mc is being loaded). I can't seem to access the root stage. I'm pretty sure that all the MCs registry points are normal. Any suggestions? Thanks.

Known Participant
September 8, 2009

Other than a slight syntax error that works well. Here is the final code I used:

var defbox:info = new info();
var mcName  = this.name;

var pt:Point = new Point(276, 265);
var newpt:Point = this.globalToLocal(pt);


this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);

function mouse_over(event:MouseEvent):void {
     this.removeEventListener(MouseEvent.MOUSE_OVER, mouse_over);
     this.addEventListener(MouseEvent.MOUSE_OUT, mouse_out);
     this.addChild(defbox);
     defbox.x=newpt.x-135;
     defbox.y=newpt.y-110;
     defbox.alpha = .95;
     defbox.title.title.text = MovieClip(parent).titles[mcName];
     defbox.def.text = MovieClip(parent).definitions[mcName];
     defbox.def.autoSize = "center";
     defbox.body.height = defbox.def.height + 25;
     defbox.title.y = defbox.body.y -8;
}
function mouse_out(event:MouseEvent):void {
     this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over);
     this.removeEventListener(MouseEvent.MOUSE_OUT, mouse_out);
     this.removeChild(defbox);
}

Thanks Kglad. I appreciate it.

kglad
Community Expert
Community Expert
September 9, 2009

you're welcome.

kglad
Community Expert
Community Expert
September 2, 2009

xPos,yPos will be relative to the timeline that contains that code.  so, if the movieclip that contains that code is in the lower right of the stage, defbox will be off-stage.

Known Participant
September 2, 2009

So, how would I access the main, first level timeline?