I am not getting the same results when using XML that does not have dedicated closing node.
The code runs and creates the aniClass or controlClass object, and inserts the object into the correct array, it just does not read the attributes.
If I put <empty></empty>, then a </animation> or </control>, everything is processed correctly.
WHAT AM I DOING WRONG?
Code:
//does NOT read attributes
<animation c="animations.anotherExample" />
<control c="controllers.anotherExample" />
//process correctly
<animation c="animations.ani978797">
<param name ="jump">
<value>15</value>
</param>
</animation>
<control c="controller.UG978797">
<param name ="blinkInterval">
<value>15000</value>
</param>
</control >
ActionScript
Actionscript Code:
private function parseMenu():void
{
var i:int = 0;
var j:int = 0
for each(var item:XML in _menu)
{
//create a new menuItem and store it in the childMenuItems array
if(item.name() == "menuItem"){
var menuItem:DeviceMenuItem = new DeviceMenuItem(_menu[i] , j);
menuItem.parentMenuItem = this;
childMenuItems.push(menuItem);
//update j so each item has the proper index
j++;
}else if(item.name() == "animation"){
//add the animation(s)
addAnimation(item);
}else if(item.name() == "control"){
//add the control(s)
addControl(item);
}else if (item.name() == "textDisplay"){
//add the text
addText(item);
}
//update i to reference the correct node in _menu
i++;
}
}
private function addAnimation(ani:XML):void
{
for each(var animation:XML in ani)
{
var aniClass:Object = {};
//attribute class was reserved causing compile error, changed class to c
//sets the name of the class
aniClass.c = String(animation..@c);
//if there are no params, do not process
if(animation.param.length() == 0)
{
break;
}
//array used to hold the properties name and ....
var props:Array = new Array;
for each(var parameter:XML in animation.param)
{
var prop:Object = {}
prop.name = String(parameter..@name);
//... and values
var values:Array = new Array();
for each(var value:XML in parameter.value)
{
values.push(value.toString())
}
prop.values = values;
props.push(prop);
}
aniClass.props = props;
_animationList.push(aniClass);
}
}
private function addControl(ctrl:XML):void
{
for each(var controller:XML in ctrl)
{
var ctrlClass:Object = {};
//gets the class name from the attribute in the xml node c
ctrlClass.c = String(controller..@c);
//if there are no params, do not process
if(controller.param.length() == 0)
{
break;
}
//array used to hold the properties name and ....
var props:Array = new Array;
for each(var parameter:XML in controller.param)
{
var prop:Object = {}
prop.name = String(parameter..@name);
//... and values
var values:Array = new Array();
for each(var value:XML in parameter.value)
{
values.push(value.toString())
}
prop.values = values;
props.push(prop);
}
ctrlClass.props = props;
_controlList.push(ctrlClass);
}
}