Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как из динамически созданного Спрайта сделать БитМэп? (http://www.flasher.ru/forum/showthread.php?t=143964)

Tr1te 30.08.2010 15:20

Как из динамически созданного Спрайта сделать БитМэп?
 
Собственно по сабжу... есть Sprite, я в него добавляю тонну детей, которые являются тоже Sprite'ами, в которые вставлены картинки. И хотел бы главный Sprite превратить в битмапу и удалить всех детей, чтобы не засорять.

Ну как битмапу нарисовать это понятно, сетПикселем, но как пиксель получить из спрайта?

gloomyBrain 30.08.2010 15:23

Почитайте про BitmapData.draw()

samana 30.08.2010 15:24

Не надо setPixel, просто
Код AS3:

bitmapData.draw(sprite)

Вообще для превращения клипа в растр, я использую такую функцию, не знаю на сколько правильно так, но работает.
Код AS3:

function rasterClip(obj) {
        var matrix:Matrix=new Matrix();
        var rect:Rectangle=obj.getRect(obj);
        matrix.translate(-rect.x,-rect.y);
        var bmd:BitmapData=new BitmapData(obj.width,obj.height,true,0x00000000);
        bmd.draw(obj,matrix);
        var bm:Bitmap=new Bitmap(bmd);
        bm.x=rect.x;
        bm.y=rect.y;
        //bm.smoothing=true; //по желанию
        while (obj.numChildren) {
                obj.removeChildAt(0);
        }
        obj.addChild(bm);
}
rasterClip(clip)


incvizitor 30.08.2010 15:41

samana, ну в Вашем коде надо было бы прописать еще

Код AS3:

obj.graphics.clear();

И типизировать то сё не мешало бы :)

samana 30.08.2010 15:45

А подскажите что типизировать, я честно не знаю. А разве graphics.clear() не используется только если динамически рисовать в клипе, ведь так ошибку выдаёт?

incvizitor 30.08.2010 16:25

Если там что нарисовано динамически - почистит, иначе просто ничего не произойдёт.
Типизировать желательно параметр obj (DisplayObject), ну и функции обычно присваивается void, правда последнее вроде только оглядка на С++. Как бы принято так писать :). Но может имеет и какой то практический смысл.

samana 30.08.2010 16:48

Ага, я понял, спасибо. У меня ещё там расчёт если нарисовано не динамически, а вручную. Альтернатива cacheAsBitmap но без тормозов.

zatoichi 30.08.2010 16:53

Как превратить в битмап вроде понятно, попробовал у себя в коде заменить один такой спрайт, но у меня не получается сделать его прозрачность, какая была раньше в Sprite. Наверно надо что-то с матрицей делать? Подскажите.

Добавлено через 7 минут
Разобрался. ..Точнее не с матрицей а colorTransform

Tr1te 30.08.2010 19:57

Можешь описать подробней как альфу из спрайта сохранить.

dimarik 31.08.2010 00:26

Не могли бы Вы рассказать что такое "динамически созданный Спрайт"?
Очень интересует, вдруг мне тоже пригодится данная техника.


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

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