XML e addChild
fevereiro 18, 2008 at 2:49 pm 4 comentários
Quem não enfrenta alguns problemas com AS3 e suas mudanças? Até se ambientalizar novamente vai algum tempinho, então pra ajudar a galera que ta começando agora vou postar um exemplinho simples de como carregar xml e ir adicionando no palco.
1. addChild é o nosso antigo attachMovie, por tanto crie um movieclip com um pequeno polígono. Vá até sua library e no classPath do linkage ponha “Polygon” sem as aspas. Agora crie outro Movie Clip só que vazio e no Linkage ponha “container”. Para fechar crie um campo de texto dinâmico para receber o valor do nosso xml e instance-o de cliquei_txt.
Ok, nosso palco está pronto.
Crie uma nova camada e insira o seguinte código.
// Importando a classe Tweener
import caurina.transitions.Tweener;
// Declarando variaveis
var final:Number = new Number;
var cont:container = new container;
var xml:XML;
var url:URLRequest = new URLRequest("meuXml.xml");
var carrega:URLLoader = new URLLoader();
// Quando carregado chamar a função "carregado"
carrega.addEventListener("complete", carregado);
carrega.load(url);
// Adicionando MovieClip Pai
this.addChild(cont);
cont.y = 100;
cont.x = (stage.stageWidth - cont.width)/2;
// Função quando o xml é carregado
function carregado(e:Event):void{
// Carregando dados do xml
xml = new XML(carrega.data);
// Definindo a variavel final como tamanho de nós do xml
final = xml.item.length();
for(var i:Number = 0; i<=final-1; i++){
// Adicionando MovieClips Filho e dando sua posição no randômica no palco
var objeto:Polygon = new Polygon();
objeto["id"] = i;
cont.addChild(objeto);
Tweener.addTween(objeto, {x:Math.random()*550-cont.x, time:1, transition:"easeInOutExpo"});
Tweener.addTween(objeto, {y:Math.random()*400-cont.y, time:1, transition:"easeInOutExpo"});
// Evento de clique no movie clip filho
objeto.addEventListener(MouseEvent.MOUSE_DOWN, ChamaObj);
}
}
// Função do clique
function ChamaObj(event:MouseEvent):void{
//Dando o valor "nome" do nó ao campo de texto
cliquei_txt.text = xml.item[event.currentTarget["id"]].@nome;
//Sorteando posição no palco
Tweener.addTween(event.currentTarget, {x:Math.random()*550-cont.x, time:1, transition:"easeInOutExpo"});
Tweener.addTween(event.currentTarget, {y:Math.random()*400-cont.y, time:1, transition:"easeInOutExpo"});
}
Pronto, teste seu filme e veja o resultado. Qualquer dúvida… comente.
Entry filed under: AS3. Tags: .
4 Comentários Add your own
Deixe uma resposta
Enviar trackback para este post | Subscribe to the comments via RSS Feed
1.
sofia | abril 6, 2008 às 1:49 pm
obrigada por isto marcelo.. eu tou confusa!
como eh que eu organiso/adiciono o meuXml ?
2.
João F. Melo | agosto 16, 2008 às 6:33 pm
Marcelo, muito bom bom mesmo este post, com ele pude aprender como fazer um simples menu+xml em as3 que há tempo estou qurendo aprender mas ainda ñ tinha encontrado uma forma super explicativa.
Muito Obrigado.
Sofia, a estrutura do xml pode ser assim:
abraços
3.
João F. Melo | agosto 17, 2008 às 7:05 pm
Não sei pq acima ñ saiu o código, mas ai
4. Simples menu+xml com Tweener « Informática prática e sem complicação | agosto 20, 2008 às 11:48 pm
[...] Como no as3 não tem mais duplicateMovieClip e sim o addChild() e foi baseado no exemplo do Marcelo Duende que fiz este [...]