Форум 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=134691)

nldr 07.01.2010 23:32

Копирование графики из объекта в объект
 
Объясните пожалуйста как скопировать графику из одного объекта в другой.

Исходные данные:
Делаю маленькую игрушку - по столу ползают тараканы, а игрок курсором-тапком их давит. Фон стола - MovieClip, состоящий нескольких спрайтов разных столов. Таракан - тоже MovieClip, состоящий из спрайтов анимации бега и кровавых пятен :mosking:.
Игрок шмякает таракана, он перестает бегать и оставляет за собой кровавое пятно. Поскольку я начинающий флешер, делалось все просто и тупо. MovieClip таракана прокручивается до пятна с кровью и ВУАЛЯ!.

НО:
Не тут-то было! После определенного момента игра начинает жутко тормозить, понимаю, что тормозят пятна от тараканов. Их-то никто не удалял. Друг подсказал, что я могу просто копировать пятна на спрайт стола сверху с помощью BitmapData.draw(). После нескольких часов поиска на выходе получилось несколько НЕДО-графических редакторов, но задача не решена. Помогите пожалуйста.:rolleyes:

VVall 07.01.2010 23:42

Создаёте BitmapData размером в стол, кладёте в фоновый спрайт. Сначала рисуете в неё (методом draw) начальную графику стола. Потом, по мере необходимости, дорисовываете туда точно так же пятна. Что именно из этого у вас не получается?

Zik. 07.01.2010 23:44

Что-то типа примера
Код AS3:

var bmpData:BitmapData(800, 600); //нужный размер пятна
var bmp:Bitmap=new Bitmap(bmpData);
bmpData.draw(); //в скобках главный контейнер
addChild(bmp);

Потом ставите на нужное место и все

VVall 07.01.2010 23:49

Цитата:

Сообщение от ZIK68 (Сообщение 877415)
Что-то типа примера

Но именно так делать не нужно, будет та же самая проблема с тормозами из-за увеличения количества объектов со временем. Код из примера нужно выполнить только один раз, отрисовав туда стол. А дальше делать только draw пятен в эту BitmapData, не создавая и не добавляя новую.

nldr 08.01.2010 00:01

Спасибо большое.
А есть возможность запихнуть готовую картинку обратно в MovieClip стола(то есть рисовать не в новом объекте Bitmap, а в конкретном фрейме MovieClip)?
И еще одно. Как позиционировать копируемый рисунок(таракана) в исходном(стола), насколько я вижу там нет паметров x,y, rotation, а есть какой-то matrix

VVall 08.01.2010 00:05

Код AS3:

var matrix:Matrix=new Matrix();
matrix.translate(x,y);
bmpData.draw(объект,matrix);



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

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