// this loads everything into stage. public void RenderScene(String startSceneName) { Array<XmlReader.Element> scenes; if (startSceneName.endsWith(".xml")) { try { startSceneName = LoadFile(startSceneName); } catch (Exception io) { } } scenes = xml_element.getChildrenByName("scene"); int Count = 0; for (XmlReader.Element sceneElement : scenes) { String sceneName = sceneElement.getAttribute("name", "Scene_" + Count++); if (startSceneName.equalsIgnoreCase(sceneName)) { stage.clear(); // reset controller scopeService.setCurrentController(null); scopeService.clearScopeVariables(); // clear all temporary variables String controllerName = sceneElement.getAttribute("controller", null); scopeService.setCurrentController(controllerName); int count = sceneElement.getChildCount(); UIScene currentScene = new UIScene(); currentScene.setName(sceneName); currentScene.setControllerName(controllerName); currentScene.setFillParent(true); // fixed: the table is not full-sized based on window size for (int i = 0; i < count; i++) { XmlReader.Element child = sceneElement.getChild(i); // use factory and dictionary // todo: // Factory factory = Dictionary.get(ElementName); // Actor a = Factory.CreateActor(); // gScene.addActor(a); Actor a = CreateActorFromElement(child); if (a != null) { currentScene.addActor(a); } } Object controller = scopeService.getCurrentController(); if (lastRenderedScene != null) { // ToDO: perform exitScene here } if (controller instanceof SceneEventListener) { ((SceneEventListener) controller).enterScene(currentScene, this); } stage.addActor(currentScene); lastRenderedScene = currentScene; break; } } }