PEDRO CLAUDIO (50 pts)

MAURO ROCHA TAVARES (40 pts)

DENIS CARAVALHO (85 pts)

LUI FERNANDO (151 pts)

PANDOGO (82 pts)

HELEN TRIOLO (444 pts)

AUTOR DESCONHECIDO (100 pts)

BÁRBARA TOSTES (64 pts)

GUILHERME SCHEIBE (49 pts)

RICARDO FIGUEIRA (33 pts)

JOTA LAGO (40 pts)

NILTON BICALHO (61 pts)
Treinamento PontoFlash de Flash e ActionScript

Como fazemos um objeto andar para frente e para trás por meio de um botão (roll over e roll out).

Como faço pra colocar múltiplas senhas e múltiplos usuários num FlashMovie?

Queria fazer um mouse trail com easing, mas que o movieclip ficasse sempre embaixo do mouse.

Estou com problemas em condicionais IF.

No Flash tem uns gradientes pré definidos: como eu faço para edita-los (inserir ou alterar)?

Como fazer para mudar as cores da barra de rolagem lateral?

Alguém conhece algum emulador ou algo do tipo que transforme arquivos de plataforma mac p/ plataforma PC?

Como gravar num TXT e depois recuperar dados enviados por um campo de texto?

É possível criar uma variável de outra variável?

Como usar "sendAndLoad" no Flash MX?

Estou tentando fazer uma linha aparecer. Tipo o R do lápisraro (www.lapisraro.com.br). No meu caso é a letra S.

Como instanciar movieclips duplicados (Duplicate Movieclip)?

Tem como chamar informações de um XML randomicamente no Flash?

Como controlar uma cena com um botão dentro do Movieclip?
Transparência no Flash.

Guias de movimento (motion guide)

Sistema de newsletter utilizando Flash + ASP.

Tweening shape (interpolação de forma)

Formatação Encoded e Decoded

Clipes Inteligentes (SmartClip).

Compartilhando fontes

Desenvolvendo um Controle de Volume Customizado em Flash

Programando objetos 3D em Plataformas 2D como a do Flash

Degradé com tons metálicos - Fireworks

Funções de actionscripts

Controlando MovieClip pelas teclas direcionais.
Texto com pause

Menu Popup

Galho

Natal arvores

Shape tween animado

Openmenu

Combobox 1

Luz

Dardos

Cerca

Fumaça

Object location
HOME | TUTORIAIS
Post comments (Livro de Visitas)
por Luiz Avanzi

Um tutorial da parte de script deste arquivo se fosse realmente completo mesmo iria ser exaustivo demais, então eu escolhi fazer da seguinte maneira, coloco o código todo comentado aqui, mas supondo que quem vai ler não precise que eu explique como funciona cada objeto e seus métodos e propriedades, ok?
Bom, vamos ao passo a passo...

1 - Inicialmente o mais fácil, crie dois arquivos txt à partir do seu bloco de notas. Salve-os como "comentarios.txt" e "PHPCounter.txt"

Basta isso, porque na realidade quem vai salvar as informações nestes txt são os dois php, por isso não precisa mais nada.

2 - Agora vamos aos php, serão três,
-um para ler os dados;
-um para gravar os dados;
-um para gravar a quantidade de posts.

2.1 - Lê os dados e disponibiliza para o flash:

<?php
$filename = "comentarios.txt";
$handle = fopen ($filename, "r"); //Abre, lê e transforma numa string o conteúdo
$conteudo = fread ($handle, filesize ($filename)); // do arquivo comentários.txt
$indesejado=array("&"); //identifica o caractere indesejado
$substituto=array("%26"); //identifica o caractere substituto
$novafrase= str_replace($indesejado, $substituto, $conteudo); //nesta função troca dentro da string
echo "&texto_final=$novafrase"; //o indesejado pelo substituto e cria uma nova string
fclose ($handle); //disponibiliza para o flash e fecha o arquivo txt.
?>

Salve como "le_texto_externo.php"

2.2 - Contador:

<?php
$filename = "PHPCounter.txt";
$fp = fopen( $filename,"r");
$Old = fread($fp, 100);
fclose( $fp );
$Old = split ("=", $Old, 5);
$NewCount = $Old[1] + '1';
$New = "Count=$NewCount";
$fp = fopen( $filename,"w+");
if (flock($fp, 2)) {
fwrite($fp, $New, 100); }
fclose( $fp );
echo "&Count=$NewCount";
?>
//este php eu peguei lá mesmo no ponto flash, na verdade era usado num contador de acessos
//e serviu perfeitamente para contar também a quantidade de posts feitos e gravar num txt
//para que o flash possa ler.

Salve como "contador.php"

2.3 - Grava os dados no txt:

<?php
$filename="comentarios.txt"; //identifica o arquivo
$quebra="<br>"; //crio várias strings para montar o texto com formato
$variavel = "=========================<br>"; //tags html que o flash interpreta sem probelmas
$atamanho="<font size='9'>" ; //todas estas strings vão formar uma total que é gravada no txt
$ftamanho="</font>";
$abold="<b>";
$fbold="</b>";
$handle = fopen ($filename, "r"); //le o arquivo e transforma o conteúdo numa string
$conteudo_a = fread ($handle, filesize ($filename));
$texto=$_POST["comentario"]; //recebe do flash estas tres variáveis via "post"
$nome=$_POST["nome"];
$marcador=$atamanho.$_POST["data_hora"].$ftamanho;
$mensagem = $texto.$quebra.$abold.$nome.$fbold.$quebra.$marcador.$quebra.$variavel.$conteudo_a ;
$fp = fopen($filename,w); //a string acima é o total que vai ser gravado no txt
if (fwrite($fp,$mensagem)) //atraves desta função
{die ("resposta=OK");} //se for feita a gravação dos dados envia para o flash uma resposta
else { die ("resposta=ERR");} //que vai enviar o swf para o frame especificado
fclose($fp);
fclose($handle);
?>

Salve como "grava_comentario.php"

Obs.: Entendo que talvez esta não seja a melhor maneira de fazer, mas sinto-me à vontade para publicar este arquivo,porque não entendo de php. Consulto o manual do php quando preciso de uma função e assim me basta, se algum dos amigos tiver uma sugestão de melhorar estes arquivos ou a arquitetura deles, pode entrar em contato que a sugestão será bem-vinda.

3 - Agora vamos ao flash, a estrutura do arquivo é muito simples, crie um novo arquivo flash com cinco layers e tres frames, da seguinte maneira:

Layers e seus conteúdos:

Layer 1 - fundo: apenas um shape retangular e vai até o frame 3;

Layer 2 - botões: No frame 1 são dois botões, instanciados de "bt_1" e "bt_2", que serão os botões de enviar e atualizar os dados, nos frames 2 e 3 apenas um botão instanciado de bt_3 que é o botão com a ação de voltar para o frame 1.

Layer 3 - Rolagem: Aparece apenas no frame 1 e contem um movieClip instanciado de "medidor" formado internamente por dois layers contendo cada layer um Movieclip, no layer 2, de cima, um quadrado de 12x20 pixels e instanciado de "slider" e no layer mais abaixo um retangulo maior de 14x240 pixels e instanciado de "trilho". É necessário que ambos estejam com o _y = 0, em relação ao movie pai, "medidor", então quando forem criar os retangulos para fazerem o movies, na hora de converter o shape em símbolo marque o quadradinho do alto e à esquerda na opção "registration".
Os outros elementos deste layer são dois botões, instanciados de "scrollSobe" e "scrollDesce"

layer 4 - Textos: No frame 1 são dois blocos de texto dinâmico, instanciados de "listagem" e "aviso" e mais dois blocos de texto input instanciados de "nome" e "comentario" neste layer voce também coloca os blocos de texto estáticos que orientam o visitante para as informações, um escrito "nome" outro escrito "comentário", cada um perto de seus respectivos campos dinâmicos;
No frame 2 apenas um bloco de texto estático com a mensagem: "dados enviados" e no frame três também apenas um bloco de texto estático com a mensagem: "erro no envio"

Layer 5 - Labels:

frame 1: "intro"
frame 2: "success"
frame 3: "error"

Layer 6 - Ações:

Pode colar este bloco todo no seu primeiro frame.
Os comentários estão bem reduzidos, mas suficientes para entender o princípio.

/****LUIZ AVANZI*****/
/****RECIFE, 2004****/
/****USE À VONTADE, PORÉM CITE A FONTE****/

stop();
/****Variáveis para o startDrag da barra****/
var teto = medidor.trilho._y;
var piso = medidor.trilho._height-medidor.slider._height;
var direita = medidor.slider._x;
var esquerda = medidor.slider._x;
/****função que envia data e hora para uma variável****/
function relogio(d) {
   dia = d.getDate().toString();
   mes = d.getMonth()+1;
   ano = d.getFullYear();
   data = ["00".substr(dia.length)+dia, mes, ano];
   hora = d.toString().split(" ")[3];
   return data.join("/")+" - "+hora;
}
function mostrar() {
   _root.horario = relogio(new Date());
}
/****Funções que enviam os dados do flash para o php****/
bt_2.onRelease = function() {
   mostrar();
   if (comentario.text == "" || nome.text == "") {
      aviso.text = "voce tem que preencher os dois campos";
      /*todos os campos devem estar preenchidos*/
   } else {
      aviso.text = "enviando dados...";
      /*status do arquivo enquanto envia os dados*/
      lv_1 = new LoadVars();
      /*Cria um objeto LoadVars para acionar o contador php*/
      lv_1.load("contador.php");
      lv_2 = new LoadVars();
      /*Cria outro objeto LoadVars para enviar os dados digitados pelo visitante para
      que o php possa ler e gravar no txt*/
      lv_2.comentario = comentario.text;
      /*estas são as tres variáveis enviadas pelo flash: comentario, nome e data_hora*/
      lv_2.nome = nome.text;
      lv_2.data_hora = _root.horario;
      lv_2.onLoad = function() {
         gotoAndStop(this.resposta == "OK" ? "success" : "error");
      };
      /*Recebe a resposta do php e envia o flash para o frame certo, de acordo com a resposta*/
      lv_2.sendAndLoad("grava_comentario.php", lv_2, "POST");
      nome.text = "";
      comentario.text = "";
   }
};
lv_3 = new LoadVars();/*Outro objeto LoadVars para ler num txt a quantidade de posts gravados pelo php*/
lv_3.onLoad = function() {
   _root.contagem = this.Count;
};
lv_3.load("PHPCounter.txt");
/****Função que le os dados através de um php ****/
function leDados() {
   listagem.text = "";
   /*zera o conteúdo das caixas de texto*/
   nome.text = "";
   comentario.text = "";
   lv_4 = new LoadVars();
   /*Cria outro objeto LoadVars para ler os dados do php*/
   lv_4.onLoad = function() {
      aviso.text = "listagem atualizada,"+newline+Math.floor(_root.contagem)+" comentários postados";
      listagem.htmlText = this.texto_final;
      /*Le a variável disponibilizada pelo php e exibe seu conteúdo na caixa de texto*/
   };
   lv_4.load("le_texto_externo.php");
   onEnterFrame = function () {
   // Uma pequena função para informar que os dados estão sendo caregados
      if (lv_4.getBytesLoaded() == lv_4.getBytesTotal()) {
         onEnterFrame = null;
      } else {
         aviso.text = "carregando dados...";
      }
   };
}
leDados();
/*A função é chamada sempe que entra este frame, isto faz com que ao clicar no botão voltar o flash atualize as informações sem que voce tenha que carregar novamente o swf*/
bt_1.onRelease = function() {
   leDados();
   /*A função também é chamada atraves do botão "atualizar"*/
};
/****Funções que fazem o scroll****/
/*Inicialmente uma função que vai ser comandada por setInterval para não entrar em conflito com o enterframe dos botões de scroll, é uma simples regra de três que localiza a posição do scroll do texto em relação a posição do "slider" que é o botão da barra de rolagem. Apenas acho importante que ela seja construída assim, com medidas relativas, nenhum número digitado nos valores, porque pode aumentar a quantidade de linhas do texto ou voce pode mudar de lugar ou o tamanho do seu scroll que ele funciona do mesmo jeito*/

function scroller() {
listagem.scroll = Math.round(medidor.slider._y*listagem.maxscroll)/(medidor.trilho._height-medidor.slider._height);
}
scrollSobe.onRollOver = function() {
   onEnterFrame = function () {
      listagem.scroll++;
      /* Aqui abaixo uma outra regra de tres que faz com que o "slider" se desloque também relativamente à posição do scroll do texto, explicando listagem.scroll é o número da linha que está sendo exibida na base da caixa de texto.*/
      this.medidor.slider._y = Math.round((listagem.scroll*(this.medidor.trilho._height-this.medidor.slider._height))/listagem.maxscroll);
   };
};
scrollSobe.onRollOut = function() {
   onEnterFrame = null;
};
scrollDesce.onRollOver = function() {
   onEnterFrame = function () {
      listagem.scroll--;
      this.medidor.slider._y = Math.round((listagem.scroll*(this.medidor.trilho._height-this.medidor.slider._height))/listagem.maxscroll);
   };
};
scrollDesce.onRollOut = function() {
   onEnterFrame = null;
};
medidor.slider.onPress = function() {
   /*Um startDrag com área limitada pelas variáveis declaras lá no começo, todas também relativas para que voce possa mudar a barra de posição e tamanho sem ter que refazer o código. E a chamada da função que desloca o texto verticalmente com relação à posição do "slider", através do setInterval a intervalos bem curtos (5 milisegundos neste caso)*/
   intervalo = setInterval(scroller, 5);
   medidor.slider.startDrag(false, esquerda, teto, direita, piso);
};
medidor.slider.onRelease = function() {
   stopDrag();
   clearInterval(intervalo);
   /*O clear intrval é importante porque se não houvesse como cancelar a função "scroller" o bloco de texto iria ficar "teimoso", os botões não iriam ter como retirá-lo da posição, pois a função "scroller" iria estar sendo chamada a cada 5 milisegundo conforme especificamos no setInterval e entaria em conflito com o enterframe chamado nos botões*/
};

Publique e teste, mas lembre-se que esta interação é com php e aí voce tem que ter o php instalado e o IIS do windows funcionando e habilitado para interpretar php.

Baixe aqui os arquivos do tutorial



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
2 comentários


Comentário de maikon
| 27/7/2011 - 13:06 |


quando clico no botão enviar aparece a mensagem erro no envio alguem sabe porque



Comentário de leo
| 15/2/2010 - 21:49 |


realmente muito bom cara, mas tenho uma duvida, como faço para fazer o flash (+ php) apagar as informações do txt... obrigado