Question : Cannot access the stage/root method getChildByName

I have search for this answer for some time around on google. It seems no one has seems to have provided a direct answer. I keep get the error message:
1180: Call to a possibly undefined method getChildByName.

I have tried added a variety of suffixes: stage, root, _stage, and none of these have seems to resolve the people. So what am I missing? I assume it is possible to use the method getChildByName and sibling methods from an action script file.
Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
package lib.cms{
 
import lib.cms.MenuItem;
import flash.text.*;
import flash.display.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import caurina.transitions.*;
import com.utils.CallArg;
import flash.events.*;
 
	public class Menu {
		
		private var __menuList:XMLList;	 
		private var __loader:URLLoader;
		private var __xml:XML;
		
		var MenuStartX:Number = 100;
		var MenuStartY:Number = 100;
		var MenuItemPadding:Number = 5;
				
		public function Menu(XMLstr:String = "xml/mainmenu.xml"):void {
			trace("Menu class called. ");
			loadXML(XMLstr);
		}
 
		private function loadXML(XMLstr:String):void {
			__loader = new URLLoader();
			__loader.addEventListener(Event.COMPLETE, onXMLLoaded);
			__loader.load(new URLRequest(XMLstr));
		}
 
		private function onXMLLoaded(event:Event):void {
 
			// Put some error catching in case the XML is malformed.
			try {
				__xml = XML(event.target.data);
				__menuList = __xml.children();
				
				trace("XML menu loaded");
				
				for (var i:int =0; i<__menuList.length(); i++) {
					// for the first element there is no previous textfield inserted
					var title:String = __menuList[i].@title;
					var menu_text = __menuList[i].@text;
					var action:String = __menuList[i].attribute("action");
					if (i==0) {
						var _x = MenuStartX;
						var _y = MenuStartY;
						//createMainMenu(title, menu_text, action, _x , _y , i );
						//createSubmenus(__menuList,i);
					} else {
						// Create the text field getting positioning setting form the previous textField inserted
						var dx = getChildByName("MenuItem"+(i-1).toString()).x;
						var dy = getChildByName("MenuItem"+(i-1).toString()).y + 1180: Call to a possibly undefined method getChildByName.getChildByName("MenuItem"+(i-1).toString()).height + MenuItemPadding;
						//createMainMenu(title, menu_text, action, dx , dy , i );
						//createSubmenus(__menuList,i);
					}
				}
				
				
 
			} catch (error:Error) {
 
				// Display an error message.
				var errorMessage:TextField = new TextField();
				errorMessage.autoSize = TextFieldAutoSize.LEFT;
				errorMessage.textColor = 0xFF0000;
				errorMessage.text = error.message;
				this.stage.addChild(errorMessage);
				return;
			}
		}
 
	}
}
Open in New Window Select All

Answer : Cannot access the stage/root method getChildByName

hi, i could be wrong but as far as I know the getChildByName is a method that has to be called from a displayObject, so either extend MovieClip or something on your class, or where is this Menu class in relation to your display i.e. how are you getting it on the Stage?
Random Solutions  
 
programming4us programming4us