FLASHGURU (155 pts)

MUZAK (45 pts)

STICKMAN (155 pts)

LUI FERNANDO (151 pts)

SASHA GUDEY (235 pts)

AMAURY BENTES (123 pts)

MARLOS ALVES CARMO (90 pts)

ZECA BALA (45 pts)

MANGOOST (80 pts)

RODRIGO AMARAL (56 pts)

RÔMULO NUNES (32 pts)

GABRIEL SPORCH (53 pts)
Treinamento PontoFlash de Flash e ActionScript

Como faço para fazer um autorun?

Não consigo chamar um texto .txt dentro de um movieclip?

Porque os símbolos de porcentagem (%) de um arquivo txt não aparecem num campo de texto?

Como criar uma função só para executar uma outra função com certos parâmetros?

Quero carregar dinamicamente um movie clip para dentro do movie principal.

Um preload (carregador) para carregar swf, jpg, mp3, txt, asp, php e xml.

Flash 5 ou Flash 4?

Preciso configurar a formatação de um arquivo .TXT importado com load variables.

Qual é o comando para quando um HTML abrir redirecione para outro automaticamente?

Quero fazer um descanso de tela no Flash (ScreenSave)?

Como se faz esse tipo de menu do site http://www.halolounge.com?

Alguém conhece integração flash no access. Não como acesso web, e sim como desing gráfico para formulários de access.

Código para fazer uma pausa (delay) de um movieclip por um determinado tempo em segundos.

Estou com uma dúvida pra setar as coordenadas para o MC.
Tween Class

Simulando botões d'água no PhotoShop.

A história do Flash.

Controlando MovieClip pelas teclas direcionais.

Interseções com objetos planos

GetMySQLData para Flash5 (segunda parte)

Envio de um arquivo SWF por e-mail

Número randômicos sem repetições no Flash 5.

Mouse trail.

Load Movie into target (movieclip).

Controlar movimento de uma máscara

Como criar um site totalmente dinâmico em Flash MX
Loop FOR declarando variáveis

Dardos

Intromar

Sound_control

Tribble

Mouse 3d

3d frame by frame

Centrifuge

Mapa - Países com A 2

3d panels1

Blur

Bspline3
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