Saltar para o conteúdo

ActionScript/Carregando imagem

Origem: Wikilivros, livros abertos por um mundo aberto.

Para carregarmos um arquivo de imagem externo (que pode ser de formato GIF, JPEG, BMP e PNG) nós usamos, além da classe Loader, as classes Bitmap e BitmapData.

Classes Bitmap e BitmapData

[editar | editar código-fonte]

O exemplo a seguir carregará o arquivo GIF screenshot.gif (de 400x300 pixels). Repare que é usado um objeto da classe Loader (chamado carregador) e que é o atributo contentLoaderInfo que recebe os manipuladores de evento (ProgressEvent.PROGRESS para informar o andamento do processo, e Event.COMPLETE para quando o carregamento estiver completo.

É no método emCompleto que será criado um objeto BitmapData, que desenhará usando o resultado do carregamento (bmd.draw(evt.target.content)). Para arrematar, esse objeto BitmapData é passado para o atributo do objeto Bitmap (bmp.bitmapData = bmd). Para exibir, adicionamos ao palco (addChild(bmp)).

Repare também que criamos o objeto Bitmap em um local e o BitmapData dentro do método emCompleto. Esse procedimento não é obrigatório - os objetos podem ser criados no mesmo local, dentro ou fora dos métodos.

var carregador:Loader = new Loader();
var cxLoading:TextField = new TextField();

// Objeto para exibição do bitmap
var bmp:Bitmap = new Bitmap();

carregador.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, emProgresso);
carregador.contentLoaderInfo.addEventListener(Event.COMPLETE, emCompleto);
carregador.load(new URLRequest("screenshot.gif"));

addChild(cxLoading);

function emCompleto(evt:Event):void {
    // Como a imagem screenshot.gif tem 400px de largura 300px de altura, definimos em bmp...
    var bmd:BitmapData = new BitmapData(400, 300);
    bmd.draw(evt.target.content);
    // Passando o objeto da classe BitmapData para o atributo correspondente de bmp...
    bmp.bitmapData = bmd;

    // Fazendo que seja exibido
    addChild(bmp);
}

function emProgresso(evt:ProgressEvent):void {
    var pct:Number = (evt.bytesLoaded / evt.bytesTotal) * 100;
    cxLoading.text = "Carregado: " + pct.toFixed() + "%";
}