Aproveitando as ferias da faculdade e essa parada de final de ano para trazer mais um JSFL desta vez realmente util.
O que ele faz:
- Abre 3 janelas, a primeira para escolher em que pasta estão as imagens a serem convertidas, a segunda para ver onde vão ser salvos os swf , e a terceira para ver onde vão ser salvos os flas (essa pode ser cancelada caso não precise dos flas)
- Para cada imagem da pasta selecionada na primeira janela, ele vai criar um fla novo, importar a imagem, redimensionar o palco, colocar allowsmooth, e exportar o swf, se optou por salvar so flas, ele ira salvar o fla na pasta selecionada, caso contrario ira fechar o fla e ir para a proxima imagem.
Resultados:
- Com alguns testes que eu fiz nas ultimas semanas a compressão dos arquivos chegou até 92% (isso faz uma boa diferença em qualquer site).
- Está facil de usar, qualquer um consegue usar, pois o jsfl faz tudo praticamente sozinho.
O JSFL:
Salve o codigo a seguir em como um arquivo jsfl:
/*
* JSFL para converter imagens para swf
* Importa a imagem em um fla novo, e exporta o swf com a imagem. (redução de até 92% no "peso do arquivo")
* @author Armando Leopoldo Keller (alkeller@live.de) http://alkeller.wordpress.com
*
* Quem utilizar esta classe, favor enviar um email para ALKELLER@LIVE.DE com o "peso" das imagens antes e depois de serem exportadas.
*
*/var fotosURI = fl.browseForFolderURL("Armando Leopoldo Keller(alkeller@live.de)\n \nSelecione a pasta das imagens.\n ");
var swfsURI = fl.browseForFolderURL("Armando Leopoldo Keller(alkeller@live.de)\n \nSelecione a pasta dos swfs.\n ");
var flasURI = fl.browseForFolderURL("Armando Leopoldo Keller(alkeller@live.de)\n \nSelecione a pasta dos flas.\n ");var fileMask1 = "*.png";
var fileMask2 = "*.jpg";var list1 = FLfile.listFolder(fotosURI + "/" + fileMask1, "files");
var list2 = FLfile.listFolder(fotosURI + "/" + fileMask2, "files");function converte(list)
{
for(var i in list)
{
var doc = fl.createDocument();
doc.importFile(fotosURI+"/"+list[i],true);
var it = doc.library.items[0];
it.quality = 80;
it.allowSmoothing = true;
doc.addItem({x:0,y:0},it);
var selecionado = doc.getTimeline().layers[0].frames[0].elements[0];
selecionado.x = 0;
selecionado.y = 0;
doc.width = parseInt(selecionado.width);
doc.height = parseInt(selecionado.height);
doc.frameRate = 1;
if(flasURI)
{
fl.saveDocument(doc,(flasURI+'/')+list[i].split(".png").join("").split(".jpg").join("")+'.fla',false);
}
doc.exportSWF(swfsURI+'/'+list[i].split(".png").join("").split(".jpg").join("")+'.swf',true);
doc.close(false);
}
}if(fotosURI && swfsURI)
{
if(list1.length > 0)converte(list1); // png
if(list2.length > 0)converte(list2); // jpg
}
else
{
alert("Você deve selecionar todas as pastas.(a de .flas é opcional)")
}
Claro que ainda pode ser otimizado, assim que tiver mais tempo quero ver se otimizo ele.
Observaçoes importantes:
- Quando for converter pngs, exporte todos eles como interlaced (faça um batch no photoshop) assim ele não fica perguntando se quer importar como um bitmap flateado.
- Quem utilizar ele, favor mandar um email ou colocar aqui nos comentarios o tamanho dos arquivos convertidos antes e depois de converter (a soma de todos os arquivos) para motivos de estatistica e para ver se ainda tem como reduzir mais sem perder a qualidade da imagem.
Qualquer duvida é só colocar nos comentarios que eu respondo assim que tiver tempo.
Arquivado em: AS 2.0, AS 3.0, Flash geral, JSFL | Tags: flash, as3, JSFL, as2, commands, script, pixelSnapping
Olá, primeiramente quero dizer que não tenho postado muita coisa no blog devido a falta de tempo, e tambem de conteudo(até se alguem tiver alguma sugestão manda por email ou coloca aqui como comentario que eu farei o possivel para falar sobre o assunto).
Hoje a tarde depois de arrumar as posiçoes dezenas de movieClips para que não distorcessem eu pensei “por que eu estou fazendo isso? o flash poderia fazer sozinho”, então criei este JSFL que faz exatamente isto (link)
OBS: se o link não funcionar copie ele e cole no navegador;
Como utilizar: é só executar.
ele pega todos os itens(movieClip,Button,Graphic,TextField..) da timeline atual e ajusta as posiçoes dos mesmos.
para aplicar isto dentro de um movieClip , abra-o e execute o comando dentro do movie;
pra quem não conseguiu abrir o link aqui vai o codigo:
// Pixel Snapping [alk].jsfl
/*
Script criado por Armando Leopoldo Keller(http://alkeller.wordpress.com)
para instalar: só colar este arquivo em C:\Users\nome_do_usuario\AppData\Local\Adobe\Flash CS3\en\Configuration\Commands
obs: este é o caminho no windows vista
*/
for( var i = 0; i < fl.getDocumentDOM().getTimeline().layers.length; i++)
{
var layerAtual = fl.getDocumentDOM().getTimeline().layers[i];
for(var j = 0 ; j < layerAtual.frames.length ; j++)
{
var frameAtual = layerAtual.frames[j];
for(var k = 0 ; k < frameAtual.elements.length ; k++)
{
var elementoAtual = frameAtual.elements[k];
elementoAtual.x = parseInt(elementoAtual.x);
elementoAtual.y = parseInt(elementoAtual.y);
}
}
}
Qualquer coisa é só comentar, ou mandar email que eu respondo.