Блог от AS3Coder'a о JavaScript, HTML, CSS... и немного о Flash.

пятница, 26 марта 2010 г.

Загрузка и отображение .bmp-изображений на ActionScript 3.0

Все мы знаем, что для того, чтобы загрузить изображение во as3-приложение, обычно используется экземпляр класса flash.display.Loader. Но типы загружаемых изображений ограничены. Возможно загрузка только .png, .jpg, .gif, .swf-файлов. А как быть например с .bmp-изображениями? Об этом мы и поговорим.

URLLoader.load();

Загружать изображение будем как бинарные данные, с помощью экземпляра класса flash.net.URLLoader. Указываем экземпляру формат загружаемых данных URLLoaderDataFormat.BINARY, и вызываем метод load, где в качестве параметра передаем экземпляр класса flash.net.URLRequest с адресом к файлу.

var loa:URLLoader = new URLLoader();
loa.dataFormat = URLLoaderDataFormat.BINARY;
loa.load(new URLRequest("image.bmp"));

ImageDecoder

Так как все изображения сжаты определенными алгоритмами, для того, чтобы их отобразить, необходимо их раскодировать. В прошлом посте мы рассматривали Encoder'ы изображений, и говорили о том, что писать их самому нет необходимости, потому что в сети полно готовых. Такая же ситуация и с Decoder'ами. Ищем. Находим:
Использовать их довольно легко. Вызывается метод decode, в единственном параметре передается ссылка на загруженные бинарные данные в виде экземпляра класса flash.utils.ByteArray (Те данные, что мы загрузили с помощью URLLoader). После исполнения возвращается экземпляр flash.display.BitmapData, который мы уже можем отобразить используя flash.display.Bitmap.

var brr:ByteArray = loa.data;
var dec:BMPDecoder = new BMPDecoder ();
var raw:BitmapData = dec.decode(brr); 
var bmp:Bitmap = new Bitmap(raw);
addChild(bmp);
В сети можно также найти Decoder'ы для других типов файлов. Например для .tiff (Tagged Image File Format), и даже .psd-файлов (Photoshop Document). Так что теперь дело за вами :)
        

5 комментариев:

  1. Всё делаеться без каких либо сторонних библиотек

    var imageLoader:Loader = new Loader();
    imageLoader.load(new URLRequest("1.jpg"));
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

    function completeHandler(event:Event):void {

    var imageTextureMap:BitmapData=event.target.content.bitmapData;
    var myImage:Bitmap = new Bitmap(imageTextureMap);

    addChild(myImage);
    }

    ОтветитьУдалить
  2. Спасибо, интересное решение :) Нужно будет попробовать.

    ОтветитьУдалить
  3. Всё делаеться без каких либо сторонних библиотек

    var imageLoader:Loader = new Loader();
    imageLoader.load(new URLRequest("1.jpg"));


    По моему речь тут не о .jpg формате....



    Спасибо за пример

    ОтветитьУдалить
    Ответы
    1. я вот использую URLLoader для загрузки текстового контента и пытался паралельно использовать Loader для загрузки картинок, так вот Loader отказывается работать если где-то в юните используются URLLoader, выход, использовать URLLoader для всего

      Удалить

Можно использовать некоторые HTML-теги, например <b>, <i>, <a>

Поиск по блогу

Обо мне



Farid Shamsutdinov (AS3Coder)
Russia, Tatarstan, Kazan
as3coder@gmail.com

Подробнее...

Постоянные читатели

© 2014 Farid Shamsutdinov. При копировании материалов, ссылка на источник обязательна. Технологии Blogger.