SYDNEY GANHO (60 pts)

LUIZ HERRERA (117 pts)

NETO LEAL (116 pts)

DAUTON JANOTA (255 pts)

STICKMAN (155 pts)

HELEN TRIOLO (444 pts)

RICARDO FIGUEIRA (33 pts)

LUIZ AVANCI (51 pts)

GUILHERME SCHEIBE (49 pts)

RÔMULO NUNES (32 pts)

DEN IVANOV (260 pts)

AMAURY BENTES (123 pts)
Treinamento PontoFlash de Flash e ActionScript

Como eu faço para editar gradientes pré definidos?

Importar variáveis de um TXT, com loadVars em um compontente scrollBar (rolagem).

Porque no meu campo de hora aparece 1,2, 3 etc e não 01, 02, 03?

Porque o Flash não reconhece casas decimais e vírgulas numa operação matemática?

Como fazer um mouse trail seguir o mouse, mas com efeito elástico?

Como deixar minhas fontes legíveis (não embaçadas) no Flash?

Como fazer um efeito alpha no Flash5?

Como faço para um objeto seguir em um caminho sinuoso?

Como mandar um comando de um movieclip para um outra cena?

Estou criando um combo works ou o famoso jogo de palavras.

Como fazer um autorun em um CD para abrir um .EXE feito pelo Flash já em tela cheia?

Preciso remover todas as arrays que tenho em um movieclip?

Quero criar um link do banner que eu criei para um ponto abaixo dentro da mesma página. O banner já esta no Dreamweaver.

Integração ASP com Flash em um formulário com um combobox.
Janelas com abas.

Controlando MovieClip pelas teclas direcionais.

Criando um objeto para sua paleta personalizada (NINJA)

Alterando Artistic Media no Corel Draw

RIA, Macromedia Flex e Laszlo Presentation Server

Login e senha

Janelas pop-up e semi-full no flash

Code Animation - Parte 1

Objeto Movieclip - Propriedades

Looping.

Objetos e classes

Flash e as mudanças do IE
Abrir popup

Load dinâmico de fotos

Espanto

Esferas conectadas

Random line draw

Controle deslizante de volume

Arrays

Fotos banner

Altex

Typetext

Catavento

ICQ
HOME | TUTORIAIS
Comunicação Flash-PHp-MySql - Objeto LoadVars
por Helen Triolo

Um objeto LoadVars é usado para transferir dados para e/ou de um script Serve Side, como PHP, ASP, CF, Perl, JSP, de/para um filme Flash MX. Propriedades do objeto LoadVars serão enviadas para o script como variáveis, tanto pelos métodos POST ou GET, e qualquer variável retornada do script será avaliada no Flash como propriedade do objeto LoadVars especificado no método load.

Usando LoadVars.send

format = loadVarsObject.send( url, target, method )
// onde todas são expressões

No exemplo do tutorial Flash-PHP, nessa mesma seção, nós queremos enviar a letra da aba selecionada de maneira que o script php a possa usar para pesquisar no Banco de dados. Então um objeto loadVars deve ser criado e uma de suas propriedades declarada para aquela letra. Antes de olharmos o código no exemplo do tutorial, eis um outro exemplo no qual um valor é declarado para uma propriedade de um objeto LoadVars e enviado a um script php:

var c = new LoadVars();
c.thisLetter = "A";
c.send("dbquery.php","_self","POST");

Esse script abaixo lê a propriedade como uma variável POST, a usa para pesquisar no Banco da dados e mostra a informação encontrada:

<?php
mysql_connect("servername","username","password");
mysql_select_db("dbname");

$qr = mysql_query("SELECT * FROM contacts WHERE LEFT(lastName,1) = '".$HTTP_POST_VARS['thisLetter']."'");

// display visitors row (1)
$nrows = mysql_num_rows($qr);
for ($i=0; $i < $nrows; $i++) {
   $row = mysql_fetch_array($qr);
   echo $row['lastName'].", ".$row['firstName']."<br>";
   echo " ".$row['phone']." ".$row['email']."<br>";
   echo " ".$row['picFile'].": ".$row['caption']."<br><br>";
}
?>

Eis o que teríamos na janela de saída (a mesma janela na qual o filme Flash está rodando, desde que especifiquemos "_self" como o alvo em nosso loadVars.send):

Anderson, Lois
301-424-5555 lois@yahoo.com
lois.jpg: Lois, 2001

Armand, Cheryl and Joe
912-948-4444 armandcj@hh.com
babysue.jpg: C and J's baby Sue, 9 days old

(etc)

Como usamos POST como parâmetro de envio, temos que ler a variável com PHP $HTTP_POST_VARS. Se você mesmo precisa construir a query string, você pode simplesmente enviar sem especificar um método, que será definido para GET por causa do querystring anexado:

var c = new LoadVars();
c.send("dbquery.php?thisLetter=A","newWindow");

e isso em dbquery.php:

<?php
mysql_connect("servername","username","password");
mysql_select_db("dbname");

$qr = mysql_query("SELECT * FROM contacts
WHERE LEFT(lastName,1) = '".$HTTP_GET_VARS['thisLetter']."'");

// display visitors row (1)
$nrows = mysql_num_rows($qr);
for ($i=0; $i < $nrows; $i++) {
   $row = mysql_fetch_array($qr);
   echo $row['lastName'].", ".$row['firstName']."<br>";
   echo " ".$row['phone']." ".$row['email']."<br>";
   echo " ".$row['picFile'].": ".$row['caption']."<br><br>";
}
?>

produz a mesma saída que acima. Quando se escreve uma aplicação Flash / Server Side, é sempre bom gerar simples testes, como o código acima, usando .send para ter certeza que as variáveis foram enviadas com sucesso, asntes de testar a aplicação completa.

Recebendo com LoadVars.load

format = loadVarsObject.load( url )
// onde url é uma expressão

Agora que temos variáveis sendo enviadas para o script php e usadas com sucesso lá, como retornar as informações para o Flash? Antes de enviar e receber ao mesmo tempo, vamos apenas receber com o método load do objeto loadVars.

   Variáveis enviadas para o Flash de um script Server Side devem sempre ser enviadas como uma string como "var=valor" separados por & (por exemplo, lastName=Anderson&phone=301-424-5555). Se uma string é enviada em resposta a um método load de um objeto loadVars, as variáveis podem então serem lidas no Flash como propriedades de um objeto loadVars. Mas há mais uma coisa que precisa ser levada em consideração. Receber informações de um Banco de Dados e devolve-las para o Flash não é algo que acontece instantaneamente -- algo precisa avisar ao Flash quando a operação for completada, para que o filme não tente usar as variáveis antes delas estarem realmente acessíveis. É preciso definir uma função que só será executada quando os dados tiverem sido retornados e colocar essa função na propriedade onLoad do objeto LoadVars. Ela dirá: quando as variáveis tiverem sido recebidas, execute a função. Isso pode ser feito de duas maneiras: com uma função anônima (também chamada função literal, eu acho):

var c = new LoadVars();
c.onLoad = function() {
   returnvals.text = "returned from php: \n\n";
   for (i in this) {
      returnvals.text += i + " = " + this[i] + "\n";
   }
};

ou com uma função nomeada, que é então designada (mas não chamada, isto é, não coloque () depois do nome da função) para a propriedade onLoad:

function showValues() {
   returnvals.text = "returned from php: \n\n";
   for (i in this) {
      returnvals.text += i + " = " + this[i] + "\n";
   }
}

var c = new LoadVars();
c.onLoad = showValues;

Note que em ambos os caminhos referir-se a "this", dentro da função, é o mesmo que chamar o objeto loadVars pelo nome. Dessa maneira, ambos os códigos acima devem ser seguidos pela linha de código abaixo para realmente solicitar os dados,

c.load("passvars.php");

e em passvars.php, isso:

<?php
$lastName = "Anderson";
$phone = "301-424-5555";
echo "lastName=".$lastName."&phone=".$phone;
?>

nós obtemos a seguinte saída:

returned from php:

phone = 301-424-5555
lastName = Anderson
onLoad = [type Function]

   As duas variáveis que queremos receber são phone e lastName. No nosso exemplo, onLoad também mostrará, mesmo que que não seja uma variável, por ser uma propriedade do objeto loadVars. Mas usualmente, você sabe que variáveis está esperando, que fará alguma coisa apenas com aquela variável e vai ignorar qualquer outra propriedade do objeto loadVars. Você pode também deletar uma propriedade supérflua antes de carregar (ainda que onLoad não seja supérfluo e precise sempre ser uma propriedade do objeto loadVars para que este funcione corretamente).

Enviando e recebendo ao mesmo tempo com LoadVars.sendAndLoad

format = loadVarsObject.sendAndLoad( url, loadVarsObject, method )
// onde url e method são expressões e loadVarsObject não

No nosso exemplo, queremos passar a letra selecionada e receber todos os dados correspondentes encontrados. Para isso a rotina de nosso php deve devolver uma string var=valor de todas aquelas variáveis e nosso filme Flash deverá usar as propriedades certas do objeto loadVars para mostrá-las no campo de texto.

O script php retorna uma string mais ou menos assim:

"n=4&lastName0=Anderson&firstName0=Lois&phone=301-424-5555&...&caption3=lastyear"

com os valores de quatro registros com o último nome começando com a letra A. Note que adicionamos uma variável no começo da string para dizer ao Flash quantos registros são esperados. Assim podemos montar um loop apropriado para lê-las. Eis como o script php se parece:

$nrows = mysql_num_rows($qr);
$rString = "n=".$nrows;

for ($i=0; $i < $nrows; $i++) {
   $row = mysql_fetch_array($qr);
   $rString .= "&lastName".$i."=".$row['lastName'].
      "&firstName".$i."=".$row['firstName'];
   $rString .= "&phone".$i."=".$row['phone']."&email".$i."=".$row['email'];
   $rString .= "&picFile".$i."=".$row['picFile'].
      "&caption".$i."=".$row['caption'];
}
echo $rString;

nós já vimos quase todos os códigos do flash; Agora devemos apenas definir a função para executar quando as variáveis forem retornadas (para ler e fazer algo com aquelas variáveis) e depois disparar o comando sendAndLoad adequado. Veja o código do filme Flash:

function showContent() {
   var i;
   content.htmlText = "";
   for (i=0; i < this.n; i++) {
      if (this["picFile"+i] != "") {
         content.htmlText +="<b>" + this["firstName"+i] + " " + this["lastName"+i] + "</b>" + "<a href='asfunction:showjpg," + this["picFile"+i] + "," + escape(this["caption"+i]) + "'> (<font color='#0000cc'>pic</font>)</a><br>";
      } else {
         content.htmlText += "<b>" + this["firstName"+i] + " " + this["lastName"+i] + "</b><br>";
      }
   content.htmlText += " " + this["phone"+i] + "<br>";
   content.htmlText += " <a href='mailto:" + this["email"+i] + "'>" + this["email"+i] + "</a><br><br>";
   }
}

// Cria um novo objeto load vars c para transferir dados
var c = new LoadVars();
c.onLoad = showContent;
// algumas linhas longas desse código nessa célula desse HTML ficam quebradas

e lembre-se que executamos o próprio sendAndLoad de dentro da rotina onRelease da aba selecionada, com esse código:

this["tab"+chr(i)].onRelease = function() {
...
c.sendAndLoad("flashmx_dbPassAndReturnString.php",c,"POST");
}

Assim podemos enviar A, B, ou C para o script php e fazer alguma coisa com as variáveis retornadas, usando o mesmo objeto LoadVars (c) tanto para enviar quanto para receber. Para entender melhor o código da função showContent, deve-se lembrar que essas são formas equivalentes de acessar a propriedade phone3 do objeto c:

c.phone3

ou

c["phone"+3]

ou

i=3
c["phone"+i]

ou

i=3
this["phone"+i]
//se o código estiver dentro da função designada para c

(Para mais informações leia o tutorial "objeto Movieclip - endereçamento", nessa mesma seção, que se aplica a todos os objetos no actionscript, não apenas a movieclips).
Assim, nós simplesmente tomamos cada propriedade retornada e as usamos, como desejamos, nos campos de texto.

asfunction

format = asfunction:functionname,param
// onde param é uma expressão

Há mais duas coisas interessantes no exemplo. A primeira é o uso do asfunction para chamar uma função de dentro do Flash. A segunda é que carregamos JPGs dinamicamente para dentro do Flash. Como você pode ver na função showContent acima, o asfunction nos permite criar um link como um html dentro de um campo de texto no Flash para ativar outra rotina. Nesse caso, chamamos a função showjpg que passa um parâmetro (apenas um parâmetro) que contém o nome do arquivo jpg e a legenda (caption), separadso por um #. Veja como showjpg se parece:

function showjpg(paramString) {
// params[0] = o nome do arquivo
// params[1] = legenda
var params = paramString.split("#");
picHolder.loadMovie(params[0]);
caption.text = unescape(params[1]);
}

A primeira coisa que esse código faz é dividir (split) o parâmetro transmitido em dois parâmetros que precisamos, usando a função split para produzir uma array de dois elementos. O primeiro elemnto guarda o nome do JPG, o segundo guarda a legenda.

carregando um jpg

format = mcInstanceName.loadMovie(jpgfile)
// onde jpgfile é uma expressão

A linha

picHolder.loadMovie(params[0]);

diz: carregue a imagem especificada pelo nome do arquivo armazenado em params[0] para dentro do movieclip picHolder. Como picHolder foi criado com um ponto de registro no alto à esquerda (0,0), e todos os arquivos JPGs têm o seu tamanho, as imagens são carregadas no local exato e nada mais é preciso fazer. Depois de carregar o jpg no seu alvo, nós preenchemos a legenda com o segundo elemento da array.

Isso é tudo. Temos o objeto LoadVars para enviar dados, o script php para usá-los e devolvê-los e a função showContents para tratá-los uma vez recebidos pelo Flash.

Você pode baixar aqui o fla e o php usado no exemplo.

Introdução - LoadVars - Editar banco de dados

Tradução:
Sérgio Ramalho



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
0 comentário