Ir para conteúdo

POWERED BY:

Arquivado

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

Camf

XML + Loadvars

Recommended Posts

Boa noite!

 

Fiz um script para que o Flash leia um XML que contém o artista e a música que estão tocando e passe essas informações via loadvars para um servidor. Até aí tudo funcionando, mas quero que ele só atualize se o título da música mudar.

 

Tentei com o código abaixo, mas ele está atualizando sempre, com o título igual ou não:

 

System.useCodepage = true;
var arquivo:XML = new XML();

function atualiza() {
//Chama o XML
arquivo.load("pulsar.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
	//trace(this.childNodes[0].childNodes[1].childNodes[0].childNodes);
	//trace(this.childNodes[0].childNodes[1].childNodes[1].childNodes);

var artista = this.childNodes[0].childNodes[1].childNodes[0].childNodes;
var titulo = this.childNodes[0].childNodes[1].childNodes[1].childNodes;

tocando.text = artista+" - "+titulo;


//Envia as variáveis para o servidor

	var lv:LoadVars = new LoadVars();
	var recebe:LoadVars = new LoadVars();
	
	lv.artist = artista;
	lv.title = titulo;
	lv.songtype = "S"
	lv.duration = "220000"
	
//Envia para o servidor somente se o título da música mudou
	if(titulo != tituloenviado){
	lv.sendAndLoad("http://10.0.0.17:8181/",recebe,"GET");
	trace("atualizou");
	tituloenviado = titulo;
	}


}

// Fecha a função atualiza
}

setInterval(atualiza,2000)

O que pode estar acontecendo?

 

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

System.useCodepage = true;
var arquivo:XML = new XML();

function atualiza() {
//Chama o XML
arquivo.load("pulsar.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
	//trace(this.childNodes[0].childNodes[1].childNodes[0].childNodes);
	//trace(this.childNodes[0].childNodes[1].childNodes[1].childNodes);

var artista = this.childNodes[0].childNodes[1].childNodes[0].childNodes;
var titulo = this.childNodes[0].childNodes[1].childNodes[1].childNodes;

tocando.text = artista+" - "+titulo;


//Envia as variáveis para o servidor

	var lv:LoadVars = new LoadVars();
	var recebe:LoadVars = new LoadVars();
	
	lv.artist = artista;
	lv.title = titulo;
	lv.songtype = "S"
	lv.duration = "220000"
	
//Envia para o servidor somente se o título da música mudou
	if(titulo != tituloenviado){
	lv.sendAndLoad("http://10.0.0.17:8181/",recebe,"GET");
	trace("atualizou");
	tituloenviado = titulo;
	}


}

// Fecha a função atualiza
}

setInterval(atualiza,2000)

 

Ta faltando a function atualiza ai ta não???????

 

function atualiza(){ bla bla bla }

 

E talvez um recebimento de informações do banco... recebe.onLoad = function(){ //novas informações}

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá berseck, a função atualiza tá pegando todo o código, e o recebe que eu usei foi só pra poder usar o sendAndLoad e não abrir uma janela no browser, pois vou usar isso num EXE.

 

As informações que eu envio via LoadVars vem desse XML pulsar.xml, que é atualizado pelo programa de músicas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camf precisa ter esse XML? Você poderia puxar essas informações direto do arquivo da musica que estiver sendo executada com o metodo Sound.ID3 que permite acesso a diversos dados do arquivo da musica, no seu caso, seria sound.ID3.TCOM para acessar o nome do autor e sound.ID3.TIT2 para acessar o titulo da música, mas da uma pesquisada no help do flash que tem a lista completa das informações que ele pode buscar de dentro do arquivo.

 

 

Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, é que o flash não está tocando um MP3 diretamente, é um programa de automação de rádios que toca a música e envia para esse XML.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, nesse caso não tem como fazer dessa maneira. Mas voltando a sua dúvida, será que um enterFrame com um if consultando se o titulo foi alterado para somente ai disparar a função caso tenha sido alterado e atualizar, talves resolva o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa,

 

Não havia reparado que era a função toda.

 

Então nesse caso não vai funcionar mesmo, pois aqui:

var artista = this.childNodes[0].childNodes[1].childNodes[0].childNodes;
var titulo = this.childNodes[0].childNodes[1].childNodes[1].childNodes;

Você fica sempre chamando o mesmo valor!!! não improta quantas vezes você atualize quando passar por essa regra vai sempre repetir o mesmo valor no artista!!!

 

Crie um contador que mude e seja variavel...

 

estilo:

var artista = this.childNodes[0].childNodes[i].childNodes[0].childNodes;
var titulo = this.childNodes[0].childNodes[i].childNodes[1].childNodes;
Onde o i vai ser o contador no qual é a musica que está sendo tocada!

 

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.