Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
seguinte, ainda meu menu dinâmico, mas agora tá indo tudo bem, graças a vocês =D
criei o xml, o flash lê certinho mas acho que estou pecando em alguma lógica, e não sei porque...
no meu xml tem botao, que é cada botão principal... cada botão pode conter subbotoes, então tem o for do botao, e um for dentro do for pra criar cada submenu que tiver... cada submenu pode ter outro submenu, então entra mais um for aí do for já mencionado... é simples.
O problema é que as coisas funcionam certinho para o primeiro botão, added como está no xml, está como deveria estar... mas os próximos botoes só add o botão principal, sem submenu e nem submenu do submenu. eu penso que é algum for que tá retornando 1 e só executando 1 vez... mas não fz muito sentido já que no primeiro botão funciona certinho, e os outros botões principais são added na tela...
tive reparando que o problema me parece nesse if aqui, quanto i == 1 ou seja no segundo looping ele não cai lá, estranho, ele retorna que submenu é nulo mas não é =(
esse if aqui
if (xmlList[i].submenus[i] != null){
//adding subBotao
...
}
me parece que quando cai no segundo submenus ele retorna nullo e não cria os submenus, mas não ontendo porque sendo que está com estrutura igualos outros botoes...
aqui o código completo
var botoes:Array = new Array ();//array representa os botões
var subMenus:Array = new Array();
var subMenus_2:Array = new Array();
//no caso 3 subMenus no 2º botão
//XML
var urlRequest:URLRequest = new URLRequest("menus.xml");
var urlLoader:URLLoader = new URLLoader();
var myXML:XML = new XML();
var xmlList:XMLList;
myXML.ignoreWhitespace = true;
var i:int; var j:int; var l:int;
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE, loadedXML);
function loadedXML(e:Event):void{
trace("here");
myXML = XML (e.target.data);
xmlList = myXML.children();
var posX:int = 0;
var posY:int = 25;
var posY_2:int;
trace ("qnt btns: ",xmlList.length());
//adding botao
for (i = 0; i < xmlList.length(); i++){
trace ("\nAdding botão ", (i+1), "\n.");
botoes.push(new Botao());
botoes[i].txtTitle.text = xmlList[i].titulo;
botoes[i].id = i;
if ((xmlList[i].link != "") || (xmlList[i].link != null)){
botoes[i].link = xmlList[i].link;
botoes[i].frame = xmlList[i].frame;
}
addChild(botoes[i]);
botoes[i].x = posX; posX += 120;
if (xmlList[i].submenus[i] != null){
//não imprime isso, ou seja não cai aqui
if (i == 1){
trace("i == 1");
}
//adding subBotao
trace(xmlList[i].submenus[i].submenu.length(), "submenus's ");
trace("vai add ",xmlList[i].submenus[i].submenu.length(), " subbotoes");
for (j = 0; j < xmlList[i].submenus[i].submenu.length(); j++){
subMenus.push (new SubBotao());
subMenus[j].id = j;
subMenus[j].link = xmlList[i].submenus[i].submenu[j].link;
subMenus[j].txtTitle.text = xmlList[i].submenus[i].submenu[j].titulo;
//adding subBotao2
trace(xmlList[i].submenus[i].submenu[i].submenu_2.length(), "\tSubmenus_2's ");
for (l = 0, posY_2 = 0; l < xmlList[i].submenus[i].submenu[j].submenu_2.length(); l++){
subMenus_2.push(new SubBotao2());
subMenus_2[l].id = l;
subMenus_2[l].txtTitle.text = "subBotao2 " + l;
subMenus_2[l].link = "link subBotao2 " + l;
subMenus[j].addChild(subMenus_2[l]);
subMenus_2[l].x = 120;
subMenus_2[l].y = posY_2; posY_2 += 25;
}//for subBotao2
botoes[i].addChild(subMenus[j]);
subMenus[j].y = posY; posY +=25
subMenus[j].visible = false;
}//for subbotao
}//if
posY = 25;
}//for botaomeu xml
<?xml version="1.0" encoding="utf-8"?>
<menu>
<botao>
<titulo>botao 1</titulo>
<link></link>
<frame>_self</frame>
<submenus>
<submenu>
<titulo>submenu1</titulo>
<link>teste_submenu.asp</link>
<frame>_self</frame>
</submenu>
<submenu>
<titulo>submenu 2</titulo>
<link></link>
<frame></frame>
<submenu_2>
<titulo>submenu_2 1</titulo>
<link>teste_2</link>
<frame>_self</frame>
</submenu_2>
<submenu_2>
<titulo>submenu_2 1</titulo>
<link>teste_2</link>
<frame>_self</frame>
</submenu_2>
</submenu>
<submenu>
<titulo>submenu3</titulo>
<link>teste_submenu.asp</link>
<frame>_self</frame>
</submenu>
</submenus>
</botao>
<botao>
<titulo>botao 2</titulo>
<link>test.asp</link>
<frame>_self</frame>
<submenus>
<submenu>
<titulo>submenu1</titulo>
<link>teste_submenu.asp</link>
<frame>_self</frame>
</submenu>
</submenus>
</botao>
<botao>
<titulo>botao 3</titulo>
<link></link>
<frame>_self</frame>
<submenus>
<submenu>
<titulo>submenu1</titulo>
<link>teste_submenu.asp</link>
<frame>_self</frame>
</submenu>
<submenu>
<titulo>submenu 2</titulo>
<link></link>
<frame></frame>
<submenu_2>
<titulo>submenu_2 1</titulo>
<link>teste_2</link>
<frame>_self</frame>
</submenu_2>
<submenu_2>
<titulo>submenu_2 1</titulo>
<link>teste_2</link>
<frame>_self</frame>
</submenu_2>
</submenu>
<submenu>
<titulo>submenu3</titulo>
<link>teste_submenu.asp</link>
<frame>_self</frame>
</submenu>
</submenus>
</botao>
</menu>
reparem que o primeiro botao igual ao 3 então... deveriam ser iguais =P
ps: o botao adiciona, mas não adiciona os submenus, e... com isso não adiciona o submenu...
Carregando comentários...