Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ByteArray to Bitmap (http://www.flasher.ru/forum/showthread.php?t=126884)

jaa_breath 30.06.2009 00:16

ByteArray to Bitmap
 
собсно есть данные в ByteArray, нужно их передать обьекту но в Bitmap, конвертер как я понял делается через Loader
например есть некий класс в котором есть:

Код AS3:

...
private var bitMap:Bitmap;
 
public function converter(bitmap:Bitmap, teArray:ByteArray):void {
                var loader:Loader = new Loader();
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoader);
                function finishLoader(event:Event):void {
                        loader.removeEventListener(Event.COMPLETE, finishLoader);
                        bitMap = new Bitmap(loader.content);
                }
                loader.loadBytes(byteArray);
        }
 
public function getBitMap():Bitmap{
return bitMap;
}

либо есть вариант чтобы метод сразу возвращал Bitmap

Код AS3:

public function converter(bitmap:Bitmap, teArray:ByteArray):Bitmap{
                var ret:Bitmap;
                var loader:Loader = new Loader();
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoader);
                function finishLoader(event:Event):void {
                        loader.removeEventListener(Event.COMPLETE, finishLoader);
                        ret= new Bitmap(loader.content);
                        return ret;
                }
                loader.loadBytes(byteArray);
                return ret;
        }


но в обоих случаях он возвращает null, потому что это происходит когда еще loader не отработал до конца.
какие есть варианты ? можно видимо написать свое событие и свой листенер, а без этого никак ?

спасибо.

iNils 30.06.2009 00:22

Посмотрите метод setPixels () у BitmapData. А про вложенные функции забудьте раз и на всегда.

jaa_breath 30.06.2009 00:27

хм, ну почему забыть ? иногда они работают как никто другой хорошо..
setPixels посмотрел, ну я не знаю заранее размер изображения, а там нужен ректангл

BlooDHounD 30.06.2009 01:37

jaa_breath, вложенный функции не могут работать хорошо.

willis83 30.06.2009 01:44

сорри за оффтоп, но неужели вложенные функции в самом деле такие плохие? Просто у меня используются вложенные функции в качестве рисовальщиков, когда при анимации используется таймер. Например сперва запускается таймер который делает анимацию по х, после него таймер который делает анимацию по у, и оба они
вложенны в одну функцию, которая вызывает всё эту анимацию.
т.е. вообщем-то без всяких наворотов и передачи параметров, просто конструкция такая, как она может не правильно отработать?

jaa_breath 30.06.2009 01:52

BlooDHounD у вас весьма удивительное утверждение..

по поводу метода setPixels, практически на всех графических файлах, кроме одного получаю ошибку End of file was encountered, хотя это обычная картинка как и все другие.

Код AS3:

                byteArray = ...
                var rect:Rectangle = new Rectangle(0, 0, 238, 107);
                var bmd1:BitmapData = new BitmapData(238, 107, true, 0xFFCCCCCC);
                byteArray.position = 0;
                bmd1.setPixels(rect, byteArray);
                var bm1:Bitmap = new Bitmap(bmd1);


BlooDHounD 30.06.2009 01:54

анонимные функции:
1. создаются каждый раз при попадании в функцию родитель.
2. имеют кривую типизацию.
3. жрут больше памяти.
4. у них плавающий объект активации.
5. от них проблемно отписываться.
6. их нельзя сравнивать друг с другом.
и т.д. и т.п.

Добавлено через 36 секунд
jaa_breath, удивительные утверждения у Вас и у willis83. но это не удивительно.

jaa_breath 30.06.2009 02:02

вы сами то поняли что написали ))
для всего есть свой случай, одним словом

BlooDHounD 30.06.2009 02:06

jaa_breath, а что я непонятно гонаписал?

jaa_breath 30.06.2009 02:15

например анонимные функции в таких языках как java или c# это совершенно нормальная практика
по пунктам:
1. ну и што, лично я не собираюсь писать там целый класс, минимум
2. чо у вас там кривого не знаю
3. как обычно. не забыть только убить нужно
4. без понятия о чем вы
5. не вижу проблем
6. и не нужно, для того они и такие (сравнение функций бессмысленно; функции необходимо вычислять и сравнивать результаты этих вычислений)


Часовой пояс GMT +4, время: 06:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.