IRAPUAN MARTINEZ (45 pts)

RICARDO FIGUEIRA (33 pts)

MANGOOST (80 pts)

AUTOR DESCONHECIDO (100 pts)

ÉMERSON ROCHA (85 pts)

AMAURY BENTES (123 pts)

DEN IVANOV (260 pts)

ILVA RUDEV (90 pts)

DAUTON JANOTA (255 pts)

GUILHERME SCHEIBE (49 pts)

RODRIGO AMARAL (56 pts)

JOTA LAGO (40 pts)
Treinamento PontoFlash de Flash e ActionScript

Quero imprimir o conteúdo de um campo de texto e não somente a parte que está na tela.

Alguém sabe como funciona os parâmetros do startdrag? StartDrag (beleza1, false, 70, 15, 70, 180);. O que seria estas medidas?

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

Como posso setar uma cor para o Release de todos os botões de meu filme?

Quero fazer um preloader para um texto aberto com load variables.

Há como inserir um som midi numa apresentação flash?

Como vestir um modelo com objetos (roupas) arrastáveis?

Gostaria de fazer um sistema de login e senha no flash com ASP.

Alguém pode me indicar algum programa para converter MIDI em WAVE?

Como fazer um radiobutton acionado por default no html.

Como fazer um preloader bem simples?

Como organizar um projeto para que o arquivo não fique grande?

Queria aprender a usar loops (While ou o For) em actioscript.

Método playBackwards para retroceder um movieclip.
Time Delay

Um contador Flash + PHP

Entendendo como funciona um preloader. Primeira parte.

Usando Flash e ASP para contruir um formulário.

Menu dinâmico a partir de um xml.

Loop Mixer.

Gira logo.

Configurando o FTP do Dreamweaver MX

Compartilhando fontes

Ilustrando com effects e gradientes no Fireworks

Carregando SWFs em diferentes níveis.

Níveis dentro do Flash - Load Movie e Load Variables (segunda parte)
Texto matrix

Digitalclock

Shared Object

Arrasta e volta

3dv3trails

Flower

Focus

3d geo

Click Duplo

Escrever

Outlines

Blur
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