PDA

Просмотр полной версии : Xml, перебрать указанный узел через onPress


Ящур
07.04.2008, 21:06
Есть меню
<?xml version="1.0" encoding="utf-8" ?>
<tree>
<stvol01 nom = "a" >
<vetka01 nomer ="01">
<otrostok file = "001" />
<otrostok file = "002" />
<otrostok file = "003" />
</vetka01>
<vetka02 nomer ="01">
<otrostok file = "001" />
<otrostok file = "002" />
<otrostok file = "003" />
</vetka02>
</stvol01>
<stvol02 nom = "b" >
<vetka01 nomer ="01">
<otrostok file = "001" />
<otrostok file = "002" />
<otrostok file = "003" />
</vetka01>
<vetka02 nomer ="01">
<otrostok file = "001" />
<otrostok file = "002" />
<otrostok file = "003" />
</vetka02>
</stvol02>
</tree>


Обрабатываю так( принцип взят с тутора на flashBlog.ru):

menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok) {
if (ok) {
F_createMenu();
}
};
menu_xml.load("menu.xml");
F_createMenu = function () {
total_stvol = menu_xml.childNodes[0].childNodes.length;
for (i=0; i<total_stvol; i++) {
_root.createEmptyMovieClip("btn"+i, i);
var but = _root["btn"+i];
but.createTextField("pole", 2, 0, 280,150, 20);
but.pole.border=true;
with (but.pole) {
selectable = false;
text = menu_xml.childNodes[0].childNodes[i].attributes.nom;
but._y = (but._height+1)*i;
}
but.onPress = function() {
currentNode = menu_xml.childNodes[0].childNodes[i].attributes.nom;
trace (currentNode);


};
}

При трэйсе undefined,хотелось бы получить атрибут узла на который нажимаю,тогда можно было бы обрабатывать циклом выборочные узлы. Возможно такое сделать?
Спасибо.

crc
07.04.2008, 22:04
В вашем случае ивент онПресс не знает что такое menu_xml. Здесь же будет ошибка из-за childNodes[i], при инициализации кнопки допишите
but.id = i
И внутри ивента используйте
currentNode = _root.menu_xml.childNodes[0].childNodes[this.id].attributes.nom;

Ящур
08.04.2008, 08:31
Спасибо, заработало.