I’m trying to create an application that can show a list of options from an XML.
Then when one option is clicked load data from a different XML to show for the option that they picked which is [j].
The code I have here only goes to the last variable after being put through the loop so no matter which option i click it goes to the data from the last option.
It only removes the last child of the original buttons as well.
Does anybody have any idea how I could get it to go to the right page?
import flash.events.Event;
import flash.text.TextField;
var xmlLoader:URLLoader = new URLLoader();
var xmlReq:URLRequest = new URLRequest("http://praxis2.cit.ie/~patrickhallihan/DynamicContent/autumn/classxml.php");
xmlLoader.load(xmlReq);
xmlLoader.addEventListener(Event.COMPLETE, getClasses);
function getClasses(e:Event):void
{
var xmlobject:XML = new XML(e.target.data);
var classlist:XMLList = xmlobject.classgroup;
var classArray:Array = new Array();
for (var i:int = 0; i<classlist.length(); i++)
{
var classname:String = xmlobject.classgroup.classname[i];
var classtxt:TextField = new TextField();
classtxt.width = 70;
classtxt.height = 20;
classtxt.border = true;
classtxt.borderColor = 0x000000;
classtxt.background = true;
classtxt.backgroundColor = 0x888888;
classtxt.textColor = 0xFFFFFF;
classtxt.text = "" + classname;
addChild (classtxt);
classArray[i] = classtxt;
}
for (var j:int = 0; j<classlist.length(); j++)
{
classArray[j].y = 40*j;
classArray[j].x = 125;
classArray[j].addEventListener(MouseEvent.CLICK, gotoSchedule);
function gotoSchedule(event:MouseEvent):void
{
removeChild (classtxt);
var xmlLoader1:URLLoader = new URLLoader();
var xmlReq1:URLRequest = new URLRequest("http://praxis2.cit.ie/~patrickhallihan/DynamicContent/autumn/getschedule.php?id="+ j);
xmlLoader1.load(xmlReq1);
xmlLoader1.addEventListener(Event.COMPLETE, getExams);
function getExams(e:Event):void
{
trace (xmlLoader1.data);
var examtxt:TextField = new TextField();
examtxt.width = 260;
examtxt.height = 400;
examtxt.y = 30;
examtxt.x = 30;
examtxt.border = true;
examtxt.borderColor = 0x000000;
examtxt.background = true;
examtxt.backgroundColor = 0x888888;
examtxt.textColor = 0xFFFFFF;
examtxt.text = (xmlLoader1.data);
addChild (examtxt);
}
}
}
}
Not sure if this will fix your problem (refactored your code), but it’s cleaner not to have some many anonymous function inside of other functions. Plus you totally don’t need a second for loop.