Adicionar smoothing em tempo de execução

Ei galera, esse é meu primeiro tutorial e espero que vocês gostem, então vamos ao que interessa.

Primeiro abra o flash e crie um novo arquivo do tipo “ActionScript 3.0″, logo em seguida pressione CTRL + J, e configure seu documento como a imagem seguinte.

Agora, vamos usar essa imagem abaixo ou uma outra qualquer para fazer o carregamento dela via actionscript, de preferência salve está imagem no mesmo diretório do seu arquivo flash.

Agora dentro do flash pressione F9 para abrir o painel “actions” e digite

//caminho relativo da imagem em relação ao arquivo flash
var urlImg:URLRequest = new URLRequest("naruto.jpg");
//classe loader utilizada para carrregar imagens e swfs
var imgLoad:Loader = new Loader();
//método load precisa como parametro um objeto do tipo "URLRequest"
imgLoad.load(urlImg);

//adiciona o loader que no nosso caso é uma imagem ao stage
addChild(imgLoad);

Nossa imagem foi adicionada ao palco, vamos alterar a scala dela para 60% para percebermos as alterações ocorridas, digite

imgLoad.scaleX = .6;//.6 é igual á 0.6 que por sua vez é igual 60%
imgLoad.scaleY = .6;

Perceba que nossa imagem fico bem detonada, para suavizar esse desgaste na imagem, vamos criar uma função que vai adicionar um smothing em tempo de execução.

function suavizaImg(img:Loader):void
{
	//pega o contéudo do Loader e o transforma em um Bitmap
	var image:Bitmap = img.content as Bitmap; 
	//ativando o smoothing
	image.smoothing = true;
}

Faça a chamada da função na linha debaixo onde estamos adicionando a imagem no palco e passe como parâmetro o objeto Loader, ficando assim

addChild(imgLoad);
suavizaImg(imgLoad);

Observe que vai acontecer um erro, esse diz que não pode acessar um método ou uma propriedade de referência nula.

Mas por que isso acontece? Quando utilizamos o método load da classe Loader fazemos o download do arquivo e no momento que fazemos essa chamada suavizaImg(imgLoad); esse download ainda não foi concluído. Solução: adicionar um evento que vai nos dizer quando esse download está completo.
Vamos remover

addChild(imgLoad);
suavizaImg(imgLoad);
//e logo abaixo de imgLoad.load(urlImg), vamos adicionar o nosso evento

imgLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, imgCarregada);

Observação: a função “imgCarregada” é responsável pelo evento ou seja, essa função apenas vai ser executada quando o download estiver completo e dentro dela vamos adicionar aquelas 2 linhas que agente apagou

function imgCarregada(e:Event):void
{
addChild(imgLoad);
suavizaImg(imgLoad);
}

Pronto, chegamos ao fim do meu primeiro tutorial. Segue abaixo o código completo.

//caminho relativo da imagem em relação ao arquivo flash
var urlImg:URLRequest = new URLRequest("naruto.jpg");
//classe loader utilizada para carrregar imagens e swfs
var imgLoad:Loader = new Loader();
//método load precisa como parametro um objeto do tipo "URLRequest"
imgLoad.load(urlImg);

//evento que vai nos dizer quando o download estiver concluido
imgLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, imgCarregada);

imgLoad.scaleX = .6; //.6 é igual á 0.6 que por sua vez é igual 60%
imgLoad.scaleY = .6;

function imgCarregada(e:Event):void
{
	//adiciona o loader que no nosso caso é uma imagem ao stage
	addChild(imgLoad);
	suavizaImg(imgLoad);
}

function suavizaImg(img:Loader):void
{
	//pega o contéudo do Loader e o transforma em um Bitmap
	var image:Bitmap = img.content as Bitmap; 
	//ativando o smoothing
	image.smoothing = true;
}

4 thoughts on “Adicionar smoothing em tempo de execução

  1. Hej, jeg er Loocar. Kom fra Malaysia. Jeg er en gymnasieelev. Ligesom at t?nke, l?se science artiklen og elsker hacke min elektroniske enhed (som Kindle Keyboard eller min telefon). T?t p? at blive en Otaku (Men har endnu ikke), K?rlighed Arranger noget. Lidt af en ren freak. Rart blog!Jade Jewelries

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>