Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maico Machado

[Resolvido] Referenciar item do xml no flash

Recommended Posts

Boa tarde pessoal!

 

Sou novo no forum e estou precisando de uma ajuda.

Gostaria de saber ccomo referenciar objeto item do xml na actionscript.

Por exemplo, gostaria de receber o image do objeto no flash.

 

Segue abaixo o exemplo de item:

 

<item image="carrossel/item1.png" tooltip="Metodo" content= "metodo.html" />

Vlw pela força!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tentando fazer um menu carrosel utilizando o codigo abaixo, mas não consigo puxar o url dentro do item que esta em xml.

//importando as classes necessarias
import mx.utils.Delegate; //classe para criar eventos dentro de outras instancias
import mx.transitions.Tween; //classe para animações via AS
import mx.transitions.easing.*; //classe para animações via AS

//Domênico Citrângulo - Top Rated Never Dies - http://www.toprated.com.br
//NENHUM direito reservado :) pode usar como quiser.

var numerodeelementos:Number; //cria variavel com numero de elementos do scroller
var tamanhodoelemento = 128; //largura de cada elemento
var largura = Stage.width; //largura total do scroller
var altura =  Stage.height; //altura total do filme
var distancia = tamanhodoelemento -1; //distancia entre cada elemento
var centerX = Stage.width/2; //centro horizontal do scroller
var centerY = Stage.height - 15; //centro vertical do scroller
var speed = 0.025; //velocidade do scroller
var home:MovieClip = this; //variavel para facilitar acesso ao _root do movie

home.cortina._alpha = 0; //escondendo a 'cortina' preta
home.tooltip._alpha = 0; //escondendo o tooltip
home.informacoes._alpha = 0; //escondendo o texto

var xml:XML = new XML(); //criando objeto XML
xml.ignoreWhite = true; //evitando a importacao de espaços desnecessários

xml.onLoad = function() //funcao que carrega o XML
{
	var nodes = this.firstChild.childNodes; //cria a variavel nodes pegando o primeiro item da arvore do XML, no caso 'itens'
	numerodeelementos = nodes.length; //cria a variavel contendo o numero de elementos dentro de nodes, no caso o número de nodes 'item'

	for (i=0; i<numerodeelementos; i++) { //inicia um loop que percorrerá cada um dos elementos
		var elemento = home.attachMovie("elemento","elemento"+i,i+1); //cria um movieclip (elemento) para o item atual
		elemento._x = (distancia * i) + tamanhodoelemento/2; //posiciona horizontalmente o elemento
		elemento._y = centerY; //posiciona verticalmente o elemento
		elemento.onEnterFrame = mover; //cria o evento onEnterFrame apontando para a funcao 'mover'
		elemento.item.inner.loadMovie(nodes[i].attributes.image); //carrega a imagem dentro do movieclip
		elemento.reflexo.inner.loadMovie(nodes[i].attributes.image); //carrega a imagem dentro do reflexo
		elemento.item.onRollOver = over; //cria o evento onRollOver apontando para a funcao 'over'
		elemento.item.onRollOut = out; //cria o evento onRollOut apontando para a funcao 'out'
		elemento.item.onRelease = go; //cria o evento onRelease apontando para a funcao 'go'
		elemento.toolText = nodes[i].attributes.tooltip; //armazena o texto do tooltip na propriedade 'tooltext'
		elemento.content = nodes[i].attributes.content; //armazena o texto mais longo na propriedade 'content'
	}

}
xml.load("itens.xml"); //executa a funcao que carrega o XML, importando o arquivo 'itens.xml'

function mover() { //cria funcao que move cada um dos itens
	var movimento = (_xmouse - (centerX)) * ((-1) * speed); //calcula a posicao do mouse (esquerda ou direita) e multiplica pela variavel 'speed'
	if ((!(elemento0._x < ((-1) * (distancia * numerodeelementos) + distancia/2 + largura) && (movimento < 0))) && (!((elemento0._x > distancia/2) && (movimento > 0)))) {
	//acima: verifica se a posição do primeiro e ultimo elemento para saber se ainda é possivel movimentar o scroller
		this._x = this._x + movimento; //movimenta o elemento
	}
}

function moveTip() { //funcao que movimenta o tooltip
	home.tooltip._x = _xmouse; //movimenta o tooltip horizontalmente seguindo o mouse
	home.tooltip._y = centerY - distancia - 90; //posiciona o tooltip acima dos elementos
}

function over() { //funcao para quando o mouse está sobre o elemento
	var tw:Tween = new Tween(this._parent,"_xscale",Strong.easeOut,this._parent._xscale,120,1,true); //aumenta a escala do elemento horizontalemente
	var tw2:Tween = new Tween(this._parent,"_yscale",Strong.easeOut,this._parent._yscale,120,1,true); //aumenta a escala do elemento verticalmente
	home.tooltip.texto.text = this._parent.toolText; //seta o texto do tooltip
	var tw3:Tween = new Tween(home.tooltip,"_alpha",Strong.easeOut,home.tooltip._alpha,100,1,true); //exibe o tooltip
	home.tooltip.onEnterFrame = Delegate.create(this,moveTip); //cria o evento onEnterFrame dentro do tooltip apontando para a funcao 'moveTip'
}

function out() { //funcao para quando o mouse deixa de estar sobre o elemento
	var tw:Tween = new Tween(this._parent,"_xscale",Strong.easeOut,this._parent._xscale,100,1,true); //retorna o elemento para a sua escala horizontal normal (100%)
	var tw2:Tween = new Tween(this._parent,"_yscale",Strong.easeOut,this._parent._yscale,100,1,true); //retorna o elemento para a sua escala vertical normal (100%)
	var tw3:Tween = new Tween(home.tooltip,"_alpha",Strong.easeOut,home.tooltip._alpha,0,1,true); //oculta o tooltip
	delete 	home.tooltip.onEnterFrame; //destroi o evento onEnterFrame do tooltip (assim liberamos memoria)
}

function go() { //funcao para exibir o texto de cada elemento quando clicamos sobre ele
	var tw:Tween = new Tween(home.tooltip,"_alpha",Strong.easeOut,home.tooltip._alpha,0,1,true); //esconde o tooltip
	for (i=0; i<numerodeelementos; i++) { //inicia um loop que percorrerá cada um dos elementos, para escondê-los
		var t:MovieClip = home["elemento"+i]; //para facilitar, guarda um atalho para o elemento dentro da variavel 't'
		t.xPos = t._x; //guarda a posição X atual do elemento - [será útil para retornar ao estado inicial]
		t.yPos = t._y; //guarda a posição Y atual do elemento - ...
		delete t.item.onRollOver; //destroi o evento onRollOver do elemento (assim liberamos memoria)
		delete t.item.onRollOut; //destroi o evento onRollOut do elemento ...
		delete t.item.onRelease; //destroi o evento onRelease do elemento ...
		delete t.onEnterFrame; //destroi o evento onEnterFrame do elemento ...
		if(t != this._parent) { //seleciona apenas os elementos que não foram clicados
			var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true); //anima a escala horizontal do elemento para 0
			var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true); //anima a escala vertical do elemento para 0
			var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true); // anima o alpha do elemento para 0
		}
		else { //seleciona o elemento clicado
			
				getURL(t.item.content);
			
		}
	}
}

Segue um trecho do xml:

<item image="carrossel/item1.png" tooltip="Metodo" content= "metodo.html" />

Como posso fazer para receber o url que esta dentro do content do item?

 

Vlw!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenha certeza que xml.firstChild.childNodes está indo diretamente para onde você quer

Pois isso ai significa algo do genero:

<galeria>
 <item image="" tooltip="" content="" />
 <item image="" tooltip="" content="" />
</galeria>

E ai estaria certo se você usar:

xml.firstChild.childNodes.attributes.imagem

 

Para verificar se seu XML ta correto

Dentro do onLoad coloque

 

trace(xml.firstChild.childNodes);

 

Ele tem que retornar todos os nós... se ele não retornar nada significa que a maneira que você ta fazendo seu XML ta errado

Mas pelo que vejo estaria tudo correto...

Como não sei a estrutura toda do XML acredito que estaria do jeito que informei acima... caso não estaja coloque daquele formato que vai funcionar.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.