Flash CS4, Salvando dados apenas com Actionscript
O FileReference já era de grande ajuda, como ele podemos “forçar” o download de arquivos que estejam no servidor sem usar linguagens externas. Mas no caso de efetuar o download de um texto ou imagem que estejam apenas no SWF era preciso enviar os dados para uma linguagem externa ajudar no trabalho; felizmente o CS4 trouxe um update incluindo o método Save() na classe FileReference que tornou isto possível.
Para salvar textos é muito simples, envie a string para o método Save() e pronto.
var fr:FileReference = new FileReference(); fr.save('Texto aqui.', 'texto.txt');
E para salvar imagens também é muito simples, e para facilitar ainda mais utilizarei a classe JPGEncoder para gerar o ByteArray da imagem. (A classe JPGEncoder está presente na library as3corelib.)
Observe abaixo como é criado o ByteArray da imagem utilizando o JPGEncoder. Basicamente é passado um BitmapaData para o método encode().
import com.adobe.images.JPGEncoder; var bmd:BitmapData = new BitmapData(200, 200); bmd.draw(mcBola); var jenc:JPGEncoder = new JPGEncoder(100); //o valor 100 representa a qualidade da imagem var barray:ByteArray = jenc.encode(bmd);
O ByteArray é passado para o método Save() ficando da forma a seguir.
import com.adobe.images.JPGEncoder; var fr:FileReference = new FileReference(); var bmd:BitmapData = new BitmapData(200, 200); bmd.draw(mcBola); var jenc:JPGEncoder = new JPGEncoder(100); //o valor 100 representa a qualidade da imagem var barray:ByteArray = jenc.encode(bmd); fr.save(barray, 'imagem.jpg');
O filme abaixo mostra os dois casos na prática.
Segue o script usado no filme acima.
import com.adobe.images.JPGEncoder; this.addEventListener(MouseEvent.CLICK, onSave); var fr:FileReference = new FileReference(); function onSave(evt:MouseEvent):void { if(evt.target.name == 'btnText') fr.save(textBox.text, 'Texto-FileReference.txt'); else if(evt.target.name == 'btnImage') { var bmd:BitmapData = new BitmapData(400, 200); bmd.draw(this); var barray:ByteArray = new JPGEncoder(100).encode(bmd); fr.save(barray, 'Imagem-FileReference.jpg'); } }




December 19th, 2008 at 16:20
Olá Erick
Muito interessante, cada dia mais o AS3 mostra pq veio para subistituir o AS2, apesar de alguns (incluindo eu) ainda resistir!
Abs
December 19th, 2008 at 19:09
Não resista Lucas!
January 19th, 2009 at 0:09
CARA, ESTAVA ATRAZ DISSO A ALGUM TEMPO, OBRIGADO PELAS DICAS, FAREI UM BOM PROVEITO. ABRAÇOS
January 20th, 2009 at 8:55
Cara voltei a acompanhar seu Blog, muito boa essa dica de salvar texto, e como é simples!
Abçs!
January 21st, 2009 at 16:40
Cara, pode me ajudar? estou fazendo desse jeito mas aqui está dando a seguinte msg de erro:
1061: Call to a possibly undefined method save through a reference with static type flash.net:FileReference.
parece que o método save não existe na classe FileReference O.o
Estou usando flashCS4 e AS3.0
January 22nd, 2009 at 13:17
@Gabriel, a mensagem acusa que não existe o método.. tem algo errado, certifique-se de estar compilando para o Flash Player 10.
January 22nd, 2009 at 13:36
Problema resolvido:
Atualizei a minha versão do Adobe AIR
Agora está perfeito!
March 3rd, 2009 at 0:40
Excelente dica, gostei. Blog nota 10!
March 14th, 2009 at 15:21
Erick, sou admirador do seu trabalho e acgho que vc possa me ajudar, estou fazndo um site em que o usuário possa desenhar plantas baixas, tenho que colocar uma forma de que o mouse só faça linhas retas, mas não estou conseguindo, um exemplo do que eu estou fazendo esta em http://www.paginateste.890m.com. se vc puder me ajudar ficaria agradecido e podemos até dicutir um preço para isso. Grato e até mais.
May 17th, 2009 at 9:55
ola erik mt interessante seu blog… mas tenho uma dúvida, qr dizer q com este metodo “save” podemos podemos criar um pequeno sistema de cadastro em flash para que as informações sejam salvas em txt?
bem, se for.. é uma grande novidade p flash, pois ele sempre dependeu de recursos externos para este tipo de situação…
responda por gentileza…
abraço.
May 18th, 2009 at 14:48
Você pode salvar sim, mas dependerá de suas necessidades no sistema, para decidir se será uma solução para o seu caso.
May 18th, 2009 at 20:45
na realidade gostaria de implementar um painel eletrônico onde ficam quatro frases fixas, so q as msm podem sofrer mudanças a qualquer momento, como será um usuario leigo em flash que ficará atualizando as msg, é necessario o uso de uma interface amigavel para que o msm possa adicionar e excluir as frases do swf
…estava implementando um exe de flash para buscar dados de um xml…, os dados do xml são manipulados por uma interface de delphi….bem a questão é q eu gostaria de implementar td em flash…. por isso recorro a recomendações…
grato pela atenção!!!!!!!
May 21st, 2009 at 0:02
Cara! Muito legal esses tutos!
E quando eu tiver uma grana ‘extra’ vou ver se compro o curso! Confesso que fiquei ancioso e de queixo no chão! Muito bom!
Abraços
May 28th, 2009 at 20:03
Excelente dica, gostei. Blog nota 10!
June 16th, 2009 at 8:36
Olá caro amigo Erick, gostei muito deste tuto… porém tenho uma duvida.
estou precisando fazer um sistema de cadastro interno em em que possa salvar no .txt os dados dos clientes, como nome, telefone etc… porém tudo em um arquivo só e tambem fazer um searcher aos clientes no mesmo. se pudesse me ajudar ficaria bastante grato pois ja procuro por isso a bastante tempo
obrigado!
June 22nd, 2009 at 12:10
Uma dúvida que é semelhante ao que está aí.
No exemplo, está mostrando como transformar algo dentro do flash em imagem ou texto. Eu queria saber como faz para salvar algo que está fora (local) para outro lugar. Como por exemplo, um link para salvar um ppt, pdf ou .ai de um CD para qualquer outro lugar, como se fosse um SAVE AS, uma simples cópia do arquivo para outro lugar que o usuário escolher.
O GET URL abre um navegador e também se for extensões que o navegador aceita, acaba abrindo nele ao invés de salvar. Usando arquivos .bat é possível executar diretamente o arquivo, porém não tem como fazer um pedido de salvar como.
Com o FileReference só é possível fazer isso quando o arquivo está online, mas e no caso de estar local?
Existe alguma maneira? Vasculhei a internet inteira, mas sem resposta…
Eu vi um aplicativo que compila em flash e conseguiu fazer isso, se chama My Flash Application, porém, não tem como descompilar para saber o script e nem tenho o arquivo fonte para editar no programa.
Alguém tem alguma solução?
Obrigado!
July 21st, 2009 at 17:20
Muito bom.
PERGUNTA:
Depois de salvo esse arquivo TXT, como faço para carregar o conteúdo desse TXT salvo dentro do meu flash?
August 13th, 2009 at 11:45
Eric, é possível salvar automaticamente essa imagem em um local específico? Sem q abra a janela de save e não tenha q clicar em salvar?
September 15th, 2009 at 13:43
Erick, precisava criar o mesmo método de salvar a imagem enviá-la diretamente para um email… seria possível? você teria algum código de exemplo? grato.
September 23rd, 2009 at 15:56
Boa tarde Érick, vc poderia me disponibilizar o .fla desce exemplo?
estou começando a aprender flash agora. E não estou conseguindo fazer.
Desde já agradeço
Obrigado
September 25th, 2009 at 19:00
Oi Erick!
Estou com um grande problema tenho que programar uma serie de jogos de treinamentos e preciso integrar (Ler e gravar) informações (textos e imagens) a um banco de dados local e de um servidor.
Você poderia me dar uma dica onde encontro isto ou se com o FileReference eu consigo isto?
December 2nd, 2009 at 20:41
Falae Erick! Parabéns, MUITO útil esse método da FileReference. No AS2 era uma vooooolta danada pra salvar o jpeg. Muito bom mesmo.
December 9th, 2009 at 21:50
OLÁ ERICK, ESTOU MONTANDO UM FLASH DE DESENHAR COM O MOUSE E SALVAR A TELA PARA 2 SOBRINHAS.
ESTOU PARADO NESSE PONTO DE SALVAR O DESENHO QUE ELAS FIZERAM. É POSSÍVEL DISPONIBILIZAR ESSE .FLA PRA GENTE ? SOU LEIGO NISSO MAS GOSTARIA DE FINALIZAR O TRABALHO.
PS.: TENTEI, MAS ESTÁ DANDO ALGUNS ERROS.
OBRIGADO E PARABÉNS PELA POSTAGEM, FICOU MUITO BOA.
1119: Access of possibly undefined property release through a reference with static type flash.display:SimpleButton.
1172: Definition com.adobe.images:JPGEncoder could not be found.
1180: Call to a possibly undefined method JPGEncoder.
December 10th, 2009 at 14:45
Olá Érick, pode ignorar meu questionamento acima. Custei mas consegui fazer o Flash ler a biblioteca as3corelib.
Agradeço… sua postagem foi muito importante!
February 21st, 2010 at 8:52
Érick, preciso saber se há alguma propriedade do save() que eu consiga fixar para salvar sempre dentro de um mesmo diretório?
é porque abre a caixa de diálogo do windows e sempre vai salvar dentro do último diretório salvo. eu gostaria de fixar pra salvar sempre dentro de c:\, por exemplo.
February 25th, 2010 at 16:54
Ola pessoal , sou novato no flash, to completamente perdido de como fazer o procedimento acima se alguem puder me ajudar fico agradecido
May 9th, 2010 at 10:10
quando eu vi isso fiqeui perplexo, pq nunca vi o flash tendo um recurso de salvar um arquivo
vlw mesmo cara!
May 9th, 2010 at 10:11
leonardo, é so voê copiar seu código e colar no actions, e depois rodar.
May 31st, 2010 at 21:41
Erick, parabéns pelo post eu estava procurando isso à MESES e até que enfim achei.
ps. Você poderia disponibilizar o .fla desse post?
Att. Igor Antun
July 12th, 2010 at 9:26
Erick, bom dia!! espero que me ajude, eu usei esse seu fonte ai, qdo eu rodo o .swf no máquina funciona perfeitamente, qdo eu faço um upload pro nosso site não funciona a função de salvar… sabe o que pode ser feito para resolver isso?
Esse é o erro que da qdo executo no Internet explore:
ReferenceError: Error #1069: Propriedade save não encontrada em flash.net.FileReference e não há valor padrão.
at CDV_fla::MainTimeline/salvarJBSHig()
no crohme por exemplo nd acontece.
July 12th, 2010 at 9:26
ops.. heheh faltou um obrigado ali no post acima…
abraço
August 10th, 2010 at 22:57
Parebéns Erick!
Obrigado amigo, parabens!
February 2nd, 2011 at 1:23
Olá Erick, primeiramente parabéns pelo seu blog, mtu interessante e cheio de posts legais
To com uma dúvida, preciso fazer isso mas em um projeto que foi desenvolvido utilizando o as2.0, o que eu faço? :S
Desde já obrigada,
Abraço
February 14th, 2011 at 23:37
Whether it can be and also certainly not, best of luck learning!
May 6th, 2011 at 2:33
Erick Souza, já conheço um pouco actionscript 3, sou autoditada, e já busquei muito, mais até agora
não consegui nada, ou seja: salvar dados usando o FileReference() sem aparecer aquela “janelinha”
se puder me ajudar, já ouvi dizer que por motivo de segurança não é permitido fazer esse tipo de coisa , pois o flash roda num servidor cliente, será isso??????????
SE PODER ME AJUDE!
PS: Criei uma caixinha de musica em flash, mas ainda não foi avalida por ninguém,
se poder dá uma olhada. end: http://danielsouzajunior.blogspot.com.
MUITO OBRIGADO.
May 6th, 2011 at 2:35
Ops: Se alguém poder me ajudar ou falar sobre isso:
daniel-10@bol.com.br
October 5th, 2011 at 10:39
Ol, estou procurando algo parecido para A.S 2.0. Preciso de ajuda!
Obrigado
December 12th, 2011 at 20:21
Generally I don’t learn post on blogs, but I would like to say that this write-up very forced me to check out and do it! Your writing taste has been surprised me. Thanks, quite nice post.
December 15th, 2011 at 14:13
Hi, i think that i saw you visited my site thus i came to “return the favor”.I’m attempting to find things to enhance my web site!I suppose its ok to use some of your ideas!!
December 15th, 2011 at 19:38
Oi a todos vocês , eu amo o seu trabalho nesta página web, você está contribuindo com uma boa informação ! Este site é muito interessante!
! Eu já tentei de namoro online Não funcionou muito bem ….
Meu nome é Andreia , de Paris, e eu vou ser um seguidor desta página, meus hobbies você pode não querer conhecê-los , mas eu digo -las é claro que eu adoro livros, bem como a pesca, e eu também jogar um monte A Cure na minha roadtrips , estou sem namorado agora tão meninos atente para mim …. só brincando
Eu escrevi este comentário porque como eu disse anteriormente eu realmente gosto de seu Web site Eu também tenho um fórum como você, mas o meu é vey diferente da sua, trata-se de jogar poker com dinheiro real para livre ….:)
Além disso, vou pedir desculpas pela minha escrita era a única maneira que encontrei para se comunicar com vocês ….manter seguro para todos vocês , amo todos vocês
December 29th, 2011 at 20:26
Thank you for every other wonderful article. The place else may just anybody get that kind of information in such a perfect means of writing? I have a presentation subsequent week, and I’m at the search for such info.
January 22nd, 2012 at 14:02
Oi, eu tenho uma input text box e queria que o que a pessoa digitou fosse salvo ao clicar no botao de salvar dentro do proprio .swf e aparecesse tudo que foi escrito dentro de um texto dinamico.
January 28th, 2012 at 16:02
high pulse poker…
[...]Flash CS4, Salvando dados apenas com Actionscript - Erick Souza[...]…