Erik 2 Denunciar post Postado Dezembro 30, 2010 Pessoal, tenho uma dúvida: estou fazendo um menu xml, esse menu vai carregar arquivos txt como conteúdo, mas não estou conseguindo configurar a fução de clique, ele até funciona, mas eu não concigo fazer os botões funcionarem separadamente, todos eles executam a mesma funcção (ultima do loop), o xml tem dois nos, um que é o nome do menu e o apelido que vai ser o nome do txt, ainda não criei o código para carregar esse txt do conteudo, porque preciso fazer cada botao carregar um nó, e não ele todo, vejam o código completo: as: //importando classes import flash.display.*; import flash.events.*; import caurina.transitions.*; import flash.text.*; //carregando o xml var xml:XML; var lista:XMLList; var loadIMG:Loader = new Loader(); var loadXML:URLLoader = new URLLoader(); loadXML.addEventListener(Event.COMPLETE, listaXML); loadXML.load(new URLRequest("menu.php.xml")); function listaXML(e:Event):void { xml = new XML(e.target.data); //cria um menu var contMenu:McContainerMenu = new McContainerMenu ; this.addChild(contMenu); contMenu.x = 10; contMenu.y = 70; var menu:Array = new Array(); for (var i:int = 0; i < xml.meumenu.length(); i++) { //cria e posiciona o menu, efeito e texto //variáveis var menuIten:McItemMenu = new McItemMenu(); var menuEfeito:McEfeitoMenu = new McEfeitoMenu(); //configura menuIten.buttonMode = true; menuIten.id = i; menuIten.textoMenu.text = xml.meumenu.titulo[i].toString(); menuIten.textoMenu.mouseEnabled = false; //adiciona ao palco contMenu.addChild(menuEfeito); contMenu.addChild(menuIten); //menuIten.addChild(textoMenu); //animação inicial Tweener.addTween(menuIten, {y:i*24, time:3, delay:0, transition:"easeInOutBack"}); Tweener.addTween(menuEfeito, {y:i*24, time:3, delay:0, transition:"easeInOutBack"}); //interatividade do menu menu.push(menuIten); menuIten.addEventListener(MouseEvent.MOUSE_OVER, sobreMenu); menuIten.addEventListener(MouseEvent.MOUSE_OUT, foraMenu); menuIten.addEventListener(MouseEvent.CLICK, clicaMenu); function sobreMenu(e:MouseEvent):void { var menu = e.target as MovieClip; Tweener.addTween(menu, {x:10, width:80, time:1, delay:0, transition:"easeOutBack"}); menuIten.gotoAndPlay(2); } function foraMenu(e:MouseEvent):void { var menu = e.target as MovieClip; Tweener.addTween(menu, {x:0, width:90, time:1, delay:0, transition:"easeOutBack"}); } //navegação function clicaMenu(e:MouseEvent):void { trace (menuIten.id); } } //carrega rodape var TXT_rodape:URLLoader = new URLLoader();// Variável para ler o arquivo TXT_rodape.dataFormat = URLLoaderDataFormat.VARIABLES;// Para ler cada variável separadamente TXT_rodape.load(new URLRequest("paginas/config.txt")); // Caminho do arquivo; TXT_rodape.addEventListener(Event.COMPLETE, aoLerTXT_rodape); // Adiciona um evento a lista; // Cria a função após ter carregado o arquivo mostra nos campos de texto function aoLerTXT_rodape(evt:Event):void { rodape.text = evt.target.data.nomedosite + " - todos os direitos reservados"; } } xml: <site> <meumenu> <apelido>contato</apelido> <titulo>Contato</titulo> </meumenu> <meumenu> <apelido>templates</apelido> <titulo>Templates</titulo> </meumenu> <meumenu> <apelido>historia-do-joomla</apelido> <titulo>Joomla</titulo> </meumenu> <meumenu> <apelido>textos</apelido> <titulo>Textos</titulo> </meumenu> <meumenu> <apelido>a-destaque-studio</apelido> <titulo>A Destaque</titulo> </meumenu> <meumenu> <apelido>home</apelido> <titulo>Home</titulo> </meumenu> </site> Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Janeiro 3, 2011 Na função que você cirou, ela recebe um evento que é o clique do mouse, ela está assim: function clicaMenu(e:MouseEvent):void { trace (menuIten.id); } Sendo que você precisa usar o "e" para achar o botão que foi clicado, pois menuIten é só o nome que está dando a todos os objetos quando está criando com o loop, então use assim: function clicaMenu(e:MouseEvent):void { trace (e.target.id); } Com esse target, ele vai pegar o id do item que foi clicado, porem dentro do seu objeto, você tem um campo de texto, e se for clicado em cima do campo de texto, ele vai retornar algo errado pois seu campo de texto não tem o id, dai pra corrigir isso, ou você usa menuIten.textoMenu.mouseChildren = false; quando está inserindo o objeto no palco, ou na função clicaMenu você coloca e.currentTarget.id Compartilhar este post Link para o post Compartilhar em outros sites
Erik 2 Denunciar post Postado Janeiro 7, 2011 Bom, neste projeto tenho boas e más notícias, primeiro: em uma das grandes coincidencias neste universo, no exato momento em que teclei control+s meu pc reiniciou, resultado: arquivo danificado, precisei fazer tudo de novo, mas com código do zero, ficou legalzin e ta funcionando, tenho um site com menu atualizado por xml e o conteúdo por arquivos txt, agora estou ralando em cima do php. O código do clique fiz assim: function clicaMenu(e:MouseEvent):void { //array que guarda os itens de menu: var menu = e.target as MovieClip; //variável que guarda o "apelido" que será usado para abrir o txt var mudamenu:String = xml.meumenu.apelido[menu.id].toString(); //função que carrega o txt var TXT_pagina:URLLoader = new URLLoader();// Variável para ler o arquivo TXT_pagina.dataFormat = URLLoaderDataFormat.VARIABLES;// Para ler cada variável separadamente //aqui vai a o caminho até o txt com a variável mudamenu TXT_pagina.load(new URLRequest("templates/flash01/paginas/"+ mudamenu +".txt")); TXT_pagina.addEventListener(Event.COMPLETE, aoLerTXT_pagina); } Foi sofrimento, mas eu consegui, depois de perder o arquivo e quase desistir do projeto, fui a luta e fiz tudo de novo, e melhor. Ae Moderado, pode por Resolvido, Valew carneirinho, sua dica me deu uma luz pra chegar até aqui! Compartilhar este post Link para o post Compartilhar em outros sites