Ir para conteúdo

POWERED BY:

Arquivado

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

P3rukao

[Resolvido] Passar dados do php para o Flash

Recommended Posts

Olá galera foreira...

 

Eu estou a desenvolver um mp3 player para um site, e não estou entendendo como enviar dados do php para o flash... :blink:

 

Explicando melhor:

 

Eu segui este tutorial (http://www.mxstudio.com.br/flash/mp3_player_com_xml/), e consegui monta-lo direitinho... está funcionando, porém, ele exibe uma playlist interna (dentro do flash), sendo que eu preciso dessa playlist em html normal, com os links e talz...

 

De primeiro, eu vou ter um selectBox com uma lista de alguns itens de audio que eu posso mandar tocar. Depois que eu clicar nesse item, eu iria abrir uma outra página, com o layout do player montado e executando o item selecionado;

 

Mais abaixo, na mesma página (esta ultima aberta), eu vou ter uma sequencia de links (<a></a>) com os itens de audio que eu posso mandar executar tbm...

 

 

» Aguem tem idéia de como que eu faço isso??

» Mandar os dados da musica que ele deve tocar, para o flash, via PHP???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia....

 

Eu estava a pesquisar sobre o assunto... e vi que preciso usar um objeto LoadVars() para fazer a transferencia de dados GET ou POST entre o php e o flash...

Mas eu ainda não entendi muito bem como usa-lo.

 

Eu sei como enviar esses dados do FLASH para o PHP... como num formulario feito em flash... que manda os dados para um PHP de tratamento de dados!

 

Porém:

» Como que eu faço para mandar esses dados do PHP para o FLASH???

» Como que o flash vai saber que eu estou mandando esses dados para ele???

 

:huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo de LoadVars();

 

var obj_l:LoadVars = new LoadVars();
obj_l.load("seu arquivo.php");
obj_l.onLoad = function(success:Boolean) {
	if(success){
			   //seu código
			  variavel = obj_l.variaveldophp;
	}else{
		trace("erro ao carregar");
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm... obrigado pelas respostas...

Mas ainda tenho uma duvida:

 

Nesses exemplos citados (por v6) acima, o flash recebe os dados do php, depois que ele mesmo já enviou alguma coisa para o mesmo.. tipo:

Eu tenho um form em flash... mando os dados para o php... e ele retorna uma variavel com mensagem de sucesso...

 

No meu caso...

Eu vou ter uma página apenas em html normal (montado com php)... e quando eu clicar num link qualquer... eu vou abrir uma outra página, que vai conter o meu arquivo em flash (um player de audio). Ele então, deve abrir o audio, referente ao identificador que eu passei pelo link da outra página.

 

Por isso eu estou meio confuso...

» Como que o flash vai saber que eu estou mandando esses dados para ele???

 

Ô.õ

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se entendi direito, mas quando você clicar no link, vai carregar a outra página, isso significa que o flash vai iniciar tudo de novo. Com isso ele vai pegar os dados que o php enviou.

 

Testa aí...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria intaum, para indicar no loadVars() para que ele "LEIA" a propria página em que esta???

 

tipo:

var obj_l:LoadVars = new LoadVars();
obj_l.load("pagina2.php");

O flash estaria, nesse caso, na pagina2.php !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm... obrigado pelas respostas...

Mas ainda tenho uma duvida:

 

Nesses exemplos citados (por v6) acima, o flash recebe os dados do php, depois que ele mesmo já enviou alguma coisa para o mesmo.. tipo:

Eu tenho um form em flash... mando os dados para o php... e ele retorna uma variavel com mensagem de sucesso...

 

No meu caso...

Eu vou ter uma página apenas em html normal (montado com php)... e quando eu clicar num link qualquer... eu vou abrir uma outra página, que vai conter o meu arquivo em flash (um player de audio). Ele então, deve abrir o audio, referente ao identificador que eu passei pelo link da outra página.

 

Por isso eu estou meio confuso...

» Como que o flash vai saber que eu estou mandando esses dados para ele???

 

Ô.õ

Você pode passar o identificador (variável) pelo prórpio link do HTML, ex:

"http://seudominio.com.br/paginaplayer.php?id=musica"

 

E na paginaplayer.PHP, você recupera essa variável e joga no endereço do swf, ex:

meuplayer.swf?id=variavel

 

E no Flash, recupere e utilize como uma variável normal...

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

var obj_l:LoadVars = new LoadVars();
obj_l.load("link.php", "POST");
obj_l.onLoad = function(success:Boolean) {
	if(success){
			   //seu código
			  teste_txt.text = obj_l.variaveldophp;
	}else{
	   teste_txt.text = "erro ao carregar";
	}
}

php:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
	echo "<a href='./dados.swf' method='POST' name='enviar'>Link</a>";
?>
</body>
</html>
<?php
 if($_POST["enviar"]){
	 echo "&variaveldophp=valor";
 }
?>

O berseck manja mais que eu... mas fiz esse teste aqui para postar...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

FREE... eu tentei usar esse seu código... mas aqui não funcionou.... intão eu tentei adaptá-lo... mas está retornando um erro esquisito aqui..

 

Essa eh a index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>

<a href="index2.php?valor=gabriel" name="enviar">Link</a>

</body>
</html>

Essa eh a index2.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
<script type="text/javascript" src="swfobject.js"></script>
</head>

<body>
<?
	 echo "&variaveldophp=".$_GET['valor'];
?>

<div id="boxLancamentos" class="midia">
<div class="loaderMidia">
	<script type="text/javascript">
		swfobject.embedSWF("testeGet.swf", "midiatv", "425", "344", "9.0.0", "", {}, {wmode:"transparent"});
	</script>
	<object id="midiatv" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="425" height="344">
		<param name="movie" value="testeGet.swf" />
		<param name="wmode" value="transparent">
		<param name="quality" value="high" />
		<param name="allowFullScreen" value="true"></param>
		<param name="allowscriptaccess" value="always"></param>
		<!--[if !IE]>-->
		<object type="application/x-shockwave-flash" data="testeGet.swf" width="425" height="344">
		<!--<![endif]-->
		<div style=" clear:both; text-align:center; padding:5px 15px 5px;">
			<b>É necessário ter o Flash Player instalado para visualizar o aplicativo.</b><br  />
			<p style="margin:0; padding:0"><a style="position:relative; height:auto;" href="http://www.adobe.com/go/getflashplayer" title="Clique para instalar o flash player"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Baixar o Adobe Flash player" /></a></p>
		</div>
		<!--[if !IE]>-->
		</object>
		<!--<![endif]-->
	</object>
 </div> <!-- end loaderMidia -->
</div> <!-- end boxLancamentos -->


</body>
</html>

No flash está do mesmo jeito que você postou... só trocando o nome da página que ele carrega no loadVars().... (index2.php)

 

 

 

O erro q ele está reotrnando aqui eh o seguinte...

no campo de texto dinamico do palco... ele está retornando todo o conteudo da página 2 abaixo do meu comando "echo" do php... =/

 

 

» POR QUE DIAXO ISSO ESTÁ ACONTECENDO??? num era pra ele retornar apenas o valor que eu passei na variável????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentou como falei?

 

No seu link da página index.php:

<a href="index2.php?valor=gabriel">Link</a>

Na página index2.php recupere a variável que foi passada via GET:

<? $variaveldophp=$_GET['valor']; ?>
E acrescente esta variável no(s) caminho(s) do seu swf:

testeGet.swf?valor=<? $variaveldophp ?>

E no Flash, basta recuperar:

_global.novaVar = valor;
trace(novaVar);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Public , Eu só não entendi uma coisa:

 

Não esou percebendo onde eu uso o "Caminho do SWF" que você mencionou...

testeGet.swf?valor=<? $variaveldophp ?>

» Desculpa a ignorância... mas eu não estou nem lembrado se sei como usar.. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sua página index2.php que você chama o arquivo swf...

 

<div id="boxLancamentos" class="midia">
<div class="loaderMidia">
	<script type="text/javascript">
		swfobject.embedSWF("testeGet.swf?valor=<? $variaveldophp ?>", "midiatv", "425", "344", "9.0.0", "", {}, {wmode:"transparent"});
	</script>
	<object id="midiatv" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="425" height="344">
		<param name="movie" value="testeGet.swf?valor=<? $variaveldophp ?>" />
		<param name="wmode" value="transparent">
		<param name="quality" value="high" />
		<param name="allowFullScreen" value="true"></param>
		<param name="allowscriptaccess" value="always"></param>
		<!--[if !IE]>-->
		<object type="application/x-shockwave-flash" data="testeGet.swf?valor=<? $variaveldophp ?>" width="425" height="344">
		<!--<![endif]-->
		<div style=" clear:both; text-align:center; padding:5px 15px 5px;">
			<b>É necessário ter o Flash Player instalado para visualizar o aplicativo.</b><br  />
			<p style="margin:0; padding:0"><a style="position:relative; height:auto;" href="http://www.adobe.com/go/getflashplayer" title="Clique para instalar o flash player"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Baixar o Adobe Flash player" /></a></p>
		</div>
		<!--[if !IE]>-->
		</object>
		<!--<![endif]-->
	</object>
</div> <!-- end loaderMidia -->
</div> <!-- end boxLancamentos -->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana Public.... funcionou certinho sim.... mas tenho outra duvida...

 

No seu exemplo... eu apenas ponho a variavel que eu passei no "caminho" do swf... e funciona lgl... usando do outro jeito (chamando o loadVars()), não funfa .. =/

 

» Eu vi também que você usou, um _global na variavel do flash.... sendo que eu já li em alguns lugares... que não eh muito recomendado usar isso...

 

 

Outra coisa...

 

Você conhece o script do mp3Player que eu mencionei no inicio do topico???

 

Eu tentei aplicar o teste dos links aqui no player... mas eu não entendi mto bem como eu uso esses valores no player em questao. Já que no exemplo desse player, são gerados alguns mcs com ids que seriam equivalentes aos dados vindos do xml... !!!

 

 

Eu imagino que seja nesse trecho que eu tenho que modificar algo... mas não sei bem como fazer...

 

function monta() {/* Função monta, responsável por mostrar os dados do XML */
	for (var i = 0; i<total; i++) {/* Para cada item retornado */
		var mc:MovieClip = recebe.attachMovie("item", "item"+i, recebe.getNextHighestDepth());/* Importamos o MovieClip item */
	
		mc._y = i*mc._height;/* Posicionamos o MovieClip um abaixo do outro */	
		mc.campo.text = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;/* Colocamos o nome da música no MovieClip */
		
		mc.id = i;/* Armazenamos o id do MovieClip */
		mc.onPress = function() {/* Ao pressionar no MovieClip */
			carregaMusica(this.id);/* Chamamos a função carregaMusica passando a música atual */		
			musicaAtual = this.id;/* Mudamos a música atual */
			player._visible = true;/* Mostramos o MovieClip player */
			/*recebe._visible = false; Escondemos o MovieClip recebe */
			scrollBar._visible = false;/* Escondemos o scrollBar */
		};
	}

	if (recebe._height>scrollBar._height) {/* Verificamos se o MovieClip recebe é maior que o scrollBar */	
		scrollBar._visible = true;/* Se for maior, mostramos o scrollBar */
	} else {
		scrollBar._visible = false;/* Se for menor, escondemos o scrollBar */
	}
} // end monta()

 

 

 

 

» Alguém pode me dar uma ajudinha nisso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estive observando o código por um instante... e me atentei para um negoço:

 

» No modo como o player já está montado (http://www.mxstudio.com.br/flash/mp3_player_com_xml/), ele está carregando um arquivo xml... lendo-o... e depois executando o tal arquivo que eu selecionei numa lista que ele mesmo criou dinamicamente...

 

» No modo que eu estou querendo fazer... ele apenas irá executar uma musica, que eu tenha selecionado na minha lista gerada pelo php, e passada via GET para o flash. Sendo assim...

 

» Eu poderia matar a marioria dos codigos do meu AS ??

» Como por exemplo o XML ?? Ainda precisaria carregá-lo??

 

» Podem corrigir a minha lógica, se estiver errado. Estou meio confuso quanto a isso!!!

» O que que eu tenho que fazer para pegar a referencia do arquivo que eu passo via GET, e executar a musica no meu player em flash???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte... eu modifiquei o arquivo, de acordo com a duvida que eu tive e consegui colocar o bixo pra funcionar.... está tocando direiinho..

 

Versão modificado por mim...

function monta() {/* Função monta, responsável por mostrar os dados do XML */
	
		id = valor;		
		carregaMusica(this.id);/* Chamamos a função carregaMusica passando a música atual */		
		/*musicaAtual = this.id; Mudamos a música atual */
		player._visible = true;/* Mostramos o MovieClip player */

} // end monta()

Porem... eu reparei em outro problema... a barra que mostra o progresso de execução do player.. não está acompanhando a musica por completo... TIPO: uma musica com usn 2min de duração, mesmo depois de já ter tocado mais da metade, a barra não saiu dos 15% da musica... ou seja, a musica acaba.. e a barriinha nem chegou perto da metade!!!!

 

» Como que ajeito isso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique o seguinte

 

musica.position // <---------- atual posição que a musica esta tocando...

musica.duration // <---------- tempo total de duração da musica...

 

esses dois são responsaveis pela conta para ver onde está a barra...

 

Para fazer um negocio desses funcionar

 

Se faz um mc que vai crescer

mc_barra

 

ai vai ficar algo assim

 

mc_barra._width = musica.position / musica.duration * (tamanho total da barra que o mc_barra vai sobrepor)

 

é bem por ai ;)

 

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.