Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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):voidvar contMenu:McContainerMenu = new McContainerMenu ;
this.addChild(contMenu);
contMenu.x = 10;
contMenu.y = 70;
var menu:Array = new Array(); 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);
}
}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>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!
Na função que você cirou, ela recebe um evento que é o clique do mouse, ela está assim:
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:
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