Ir para conteúdo

POWERED BY:

Arquivado

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

netoikeda

Detectar valor de nó do XML no Flash AS2

Recommended Posts

Bom Dia Galera, sou novo no fórum e precisava de uma GRANDE ajuda com um trabalho q estou desenvolvendo. É uma rádio, no qual tds os usuarios do site onde ela vai ficar, vao ter um login e senha, e de acordo com esse login e senha vão ter sua própria playlist. Até ai ta perfeito, consegui fazer a rádio separar as playlists por ID dp de muuito trabalho, mais ai surgiu outro desafio... o de fazer essa rádio dizer as horas. Eu tenho tds os arquivos mp3 das horas, os de horas chamam 1h, 2h, 3h.. e os de minuto 1m, 2m.. E tenho o codigo das horas. O modo q eu estou tentando fazer é, eu coloquei hora_certa em um atributo no meu XML, e eu precisva fazer o flash detectar esse valor "hora_certa", e quando detectasse, ele fizesse tocar o arquivo mp3 das horas, eu concatenei e td certinho, mais não estou conseguindo. Alguém poderia dar uma ajuda? Sei que é bem complicado, então agradeço mesmo assim ^^. Aqui vai o código e o XML:

 

AS2:

 

//pega id

var Recebe:LoadVars = new LoadVars;

Recebe.load("id.php",0,"POST");

Recebe.onLoad = function () {

id_text.text = this.id;

id_text._visible = false;

 

 

//hora e minuto

 

valores = new Date();

hora = valores.getHours();

minuto = valores.getMinutes();

segundos = valores.getSeconds();

diaSemana = valores.getDay();

ano = valores.getFullYear();

mes = valores.getMonth() + 1;

dia = valores.getDate();

 

if (dia < 10){

dia = "0" + dia;

} // end if

if (mes < 10){

mes = "0" + mes;

} // end if

if (ano < 10){

ano = "0" + ano;

} // end if

 

 

if (hora < 10){

hora = "0" + hora;

} // end if

if (minuto < 10){

minuto = "0" + minuto;

} // end if

 

horario=hora + "" + minuto;

horatual.text = hora + ":" + minuto;

segatual.text = segundos;

 

 

if (horario < "1159"){

mensagem2.text = "Bom Dia!";

 

} // end if

 

if(horario > "0000" and horario < "0559" ){

mensagem2.text = "Boa Madrugada!";

} // end if

 

 

if(horario > "1200" and horario < "1759" ){

mensagem2.text = "Boa Tarde!";

} // end if

 

if(horario > "1800" and horario < "2159" ){

mensagem2.text = "Boa Noite!";

} // end if

 

 

 

 

setInterval(lime_hor, 1000);

 

/////////////////////////////////////////////////////////////////

 

 

// Flash MP3 Player XML

// Developed by www.flashmo.com

import mx.transitions.Tween;

import mx.transitions.easing.*;

 

 

 

var song_folder:String = "songs/";

var song_list:Array = new Array();

var track_list:Array = new Array();

var artist_list:Array = new Array();

var album_list:Array = new Array();

var current:Number = 0;

var position:Number;

var new_volume:Number = 100;

var flashmo_xml:XML = new XML();

flashmo_xml.ignoreWhite = true;

flashmo_xml.onLoad = function()

{

var nodes:Array = this.firstChild.childNodes;

for(var i = 0; i < nodes.length; i++)

{

song_list.push(nodes.attributes.filename);

track_list.push(nodes.attributes.track);

artist_list.push(nodes.attributes.artist);

album_list.push(nodes.attributes.album);

}

play_song("start");

}

 

 

/////////carrega xml

flashmo_xml.load( song_folder + "radio_" + this.id + ".xml");

 

if (this.attributes.filename = hora_certa)

{

timer.text = "São" + hora;

hora_correta = function () {

som = new Sound();

som.loadSound("Hora_Certa/" + hora + "h.mp3", true);

som.onSoundComplete = function(){

som2 = new Sound();

som2.loadSound("Hora_Certa/" + minuto + "m.mp3", true);

}

}

}

}else{

}

 

 

 

e aqui o XML:

 

 

<?xml version="1.0" encoding="UTF-8" ?>

<songs>

<song filename="Hora_certa" Faixa="horário" artist="Eric Jordan" album="October 2007, Evolver" />

<song filename="EricJordan_Evolver_October2007_30_192k.mp3" Faixa="Faixa Um" artist="Eric Jordan" album="October 2007, Evolver" />

<song filename="EricJordan_Quest_July2007_10_11.mp3" Faixa="Faixa Dois" artist="Eric Jordan" album="July 2007, Quest" />

<song filename="EricJordan_SecondSun_November2006_72_73.mp3" Faixa="Faixa Tres" artist="Eric Jordan" album="November 2006, Second Sun" />

<song filename="EricJordan_SecondSun_November2006_71.mp3" Faixa="Faixa quatro" artist="Eric Jordan" album="November 2006, Second Sun" />

</songs>

 

 

Obrigado! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

Acho q se você fizer de outra forma fica melhor e mais facil,

 

Depois q eu li o seu post eu fui fazer um teste, e funcionou certinho..

 

Use a classe Date(), use o valores.getHours() para buscar a hora e faça comparações com IF's e chame a funcão de acordo com a musica:

 

Ex:

if(valores.getHours < 11 and > 18){
    funcMusicaTarde();
}

E dentro da funcMusicaTarde() você chama os dados do XML para carregar a musica correta..

 

 

Espero ter ajudado..

 

 

Abraxx..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum, malz, mais você pode postar o código q usou? ou o Arquivo? Vlw

 

Ahh, eu entendi o q você quis dizer, mais não serie esse o propósito, entenda q cada usuario vai ter sua propria playlist, ou seja, um proprio XML pra cada, e dp de um numero determinado de musicas, por exemplo 5 musicas, vai ter o atributo "hora_certa" no XML, seria pro flash detectar isso, e ai puxar os arquivos de musik, eu não posso deixar esse codigo fixo... Eis o meu problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

use dinamismo nisso, rsrs..

 

use variaveis q puxam os dados qdo o xml for carregado, tipo, a pessoa01 logou, o xml dela é carregado e os dados são guardados nas variaveis q você vai configurar, tipo var musica_manha = musica1, e musica1 você faz receber os dados do xml daquela pessoa.

Assim tanto faz o q vai setar na função, contanto q as variaveis recebam os dados qdo carregar o xml depois q o user logar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, até essa parte beleza, mais o problema é eu detectar quando tiver o Hora-certa no filename, pq quando xega no no atributo hora_certa ele passa batido e o flash le a prox musik, ja q no atributo hora_certa nao ta chamando nenhuma, eu teria q chamar pelo flash, poderia ateh ser um arquivo de audio direto sem precisar de XML. E uma dúvida, se tiver tocando as musikas do XML, e der certo de o Flash conseguir identificar o hora_certa, e puxar o som do horario, ele vai tocar os dois simultaneamente? ou ele vai parar de reproduzir o do xml?

 

 

 

ps: tenho quase certeza de q esse codigo está incorreto...

 

if (this.attributes.filename = hora_certa)
{
timer.text = "São" + hora;
hora_correta = function () {
som = new Sound();
som.loadSound("Hora_Certa/" + hora + "h.mp3", true);
som.onSoundComplete = function(){
som2 = new Sound();
som2.loadSound("Hora_Certa/" + minuto + "m.mp3", true);
}
}
}
}else{
}

Enfim, axo q a definição da palavra hora_certa no xml não é atributo ;p . ele só está la pro flash saber a hora q eh pra chamar os arquivos do horario. Se alguem souber como se faz essa marotagem ^^.

 

Bom, tentando aki, fiz outro modelo de XML:

<?xml version="1.0" encoding="UTF-8" ?>
<songs>
	<song filename="EricJordan_Evolver_October2007_30_192k.mp3" track="Faixa Um" artist="Eric Jordan" album="October 2007, Evolver" horacerta="0" />
	<song filename="EricJordan_Quest_July2007_10_11.mp3" track="Faixa Dois " artist="Eric Jordan" album="July 2007, Quest" horacerta= "0" />
	<song filename="EricJordan_SecondSun_November2006_72_73.mp3" track="Faixa Tres " artist="Eric Jordan" album="November 2006, Second Sun" horacerta= "0" />
		<song filename="EricJordan_SecondSun_November2006_72_73.mp3" track="Faixa Tres " artist="Eric Jordan" album="November 2006, Second Sun" horacerta="1" />
	<song filename="EricJordan_SecondSun_November2006_71.mp3" track="Faixa Quatro " artist="Eric Jordan" album="November 2006, Second Sun" horacerta="0" />
</songs>

eu atribui o valor de 0 ou 1 para o topico horacerta, até ai ta ok, eu estou fazendo o flash mostrar esse valor em um txt dinamico, até ai td beleza, o sentido disso era fazer o flash detectar quando tivesse o valor 1, mais nao estou conseguindo fazer ele ver isso. Eu ja tentei relacionar com o txt dinamico q ta mostrando o valor :

 

if(info.text=="1") {

já tentei direto da variavel:

 

if(horarios2[current]==1) {
if(horarios2[current]=="1") {

mais até agora nada, se alguem souber. por favooooooor me ajude . Thanks =D

 

Se não for dessa maneira, por favor me corrijam =)

 

o problema da hora foi resolvido, vou postar o código pra se algum dia alguem precisar, não passar pelo q eu passei. Maaais tem um outro problema, quando eu passei os codigos das horas pra junto dos outros codigos, eu tive q tirar a função dele e colocar ele dentro de uma função q ja existia, só q ai o q acontece, o horario do flash nao atualiza mais, e eu nao sei como posso arrumar isso, se alguem puder ajudar eu agradeço ta ai o código. e o erro é na parte das horas, onde ela não se atualiza, se eui entro no site as 13:55 vai fik assim ateh a morte ;D.

 

//pega id

var Recebe:LoadVars = new LoadVars;
Recebe.load("id.php",0,"POST");
Recebe.onLoad = function () {
		id_text.text = this.id;
		id_text._visible = true;


//hora e minuto


	valores = new Date();
    hora = valores.getHours();
    minuto = valores.getMinutes();
    segundos = valores.getSeconds();
    diaSemana = valores.getDay();
    ano = valores.getFullYear();
    mes = valores.getMonth() + 1;
    dia = valores.getDate();
    
	if (dia < 10){
        dia = "0" + dia;
    } // end if
    if (mes < 10){
        mes = "0" + mes;
    } // end if
    if (ano < 10){
        ano = "0" + ano;
    } // end if
    

    if (hora < 10){
        hora = "0" + hora;
    } // end if
    if (minuto < 10){
        minuto = "0" + minuto;
    } // end if
    
	horario=hora + "" + minuto;
    horatual.text = hora + ":" + minuto;
    segatual.text = segundos;
 
 	
    if (horario < "1159"){
        mensagem2.text = "Bom Dia!";

    } // end if
	
	if(horario > "0000" and horario < "0559" ){
        mensagem2.text = "Boa Madrugada!";
    } // end if

	
    if(horario > "1200" and horario < "1759" ){
        mensagem2.text = "Boa Tarde!";
    } // end if
	
	if(horario > "1800" and horario < "2159" ){
	     mensagem2.text = "Boa Noite!";
    } // end if
		

setInterval(1000);

/////////////////////////////////////////////////////////////////


// Flash MP3 Player XML
// Developed by www.flashmo.com
import mx.transitions.Tween;
import mx.transitions.easing.*;



var song_folder:String = "xml/";
var song_list:Array = new Array();
var track_list:Array = new Array();
var artist_list:Array = new Array();
var album_list:Array = new Array();
var current:Number = 0;
var position:Number;
var new_volume:Number = 100;
var flashmo_xml:XML = new XML();
flashmo_xml.ignoreWhite = true;
flashmo_xml.onLoad = function()
{
	var nodes:Array = this.firstChild.childNodes;
	for(var i = 0; i < nodes.length; i++)
	{
			if (nodes[i].attributes.filename == "HORA"){
			nodes[i].attributes.filename = "../Hora_Certa/" + hora + "h.mp3"; 	
			}
			if (nodes[i].attributes.filename == "MINUTO"){
			nodes[i].attributes.filename = "../Hora_Certa/" + minuto + "m.mp3"; 	
			}	
			
		song_list.push(nodes[i].attributes.filename);
		track_list.push(nodes[i].attributes.track);
		artist_list.push(nodes[i].attributes.artist);
		album_list.push(nodes[i].attributes.album);
	}

	play_song("start");
}


/////////carrega xml

flashmo_xml.load( song_folder + "radio_" + this.id + ".xml");

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta fazer o seguinte, crie uma função especifica para a hora, chame a função usando: setInterval(nome_da_funcao, 1000);

 

tipo:

 

Recebe.onload = function () {
id_text.text = this.id;
id_text._visible = true;


//hora e minuto

hora_minuto function(){
    
    //coloca o codigo da hora aqui

}

setInterval(hora_minuto, 1000);


}

tente isso..

 

 

Abraxx..

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.