¿hay alguna manera de que el dataProvider sólo sea un array con el objeto attributes sin tener que hacer otro array parseándolo todo. Estos son los códigos que uso de momento (y funcionan):
xml:
Código :
− <libraryItems> − <assests> <item name="light_saber" type="movie clip" linckageName="undefined"/> <item name="parte_amarilla" type="movie clip" linckageName="undefined"/> <item name="parte_metal" type="movie clip" linckageName="undefined"/> <item name="shield_ass" type="movie clip" linckageName="undefined"/> <item name="sword" type="graphic" linckageName="undefined"/> <item name="sword1_basic" type="movie clip" linckageName="undefined"/> <item name="sword2_ass1" type="movie clip" linckageName="undefined"/> <item name="sword2_ass2" type="movie clip" linckageName="undefined"/> </assests> − <shields> <item name="Big Shield" type="movie clip" linckageName="Big Shield"/> <item name="Small Shield" type="movie clip" linckageName="Small Shield"/> </shields> − <swords> <item name="Basic Sword" type="movie clip" linckageName="Basic Sword"/> <item name="Crystal Sword" type="movie clip" linckageName="Crystal Sword"/> <item name="Light Saber" type="movie clip" linckageName="Light Saber"/> </swords> </libraryItems>
AS:
Código :
myLibrary.onLoad = function() {
var i:Number = 0;
var ref = this.firstChild.childNodes;
for (var a in ref) {
trace(ref[a].nodeName);
if (ref[a].nodeName == "swords") {
swords_cb.dataProvider = ref[a].childNodes;//********AQUÍ tendría que ir algo que
lo limite a attributes******/
trace(ref[a].childNodes);
i++;
} else if (ref[a].nodeName == "shields") {
shields_cb.dataProvider = ref[a].childNodes;
i++;
}
if (i == 2) {
break;
}
}
//Decimos a los combos que muestren la propiedad name de los objetos del array
swords_cb.labelFunction = shields_cb.labelFunction=function (item):String {
return item.attributes.name;
}; 