Просмотр полной версии : Нужно залить произвольную фигуру фактурой
mikhailk
29.12.2010, 18:57
я так понимаю, нужно сделать из фигуры маску и подложить под нее прямоугольник, залитый через
beginBitmapFill.
Или есть способ проще?
Zebestov
29.12.2010, 19:28
Ну если фигура растровая, то можно и так. А можно побырику накидать фильтр в PixelBender.
А может и еще кто что проще подскажет.
Добавлено через 17 минут
Хотя, если нужного размера прямоугольник с текстурой загодя отрисовать и хранить в BitmapData, то можно попробовать обойтись BitmapData#copyPixels()
Я бы даже сказал #copyChannel().
mikhailk
30.12.2010, 01:11
работает ))
Единственно, приходится шаблон переводить в битмапдату
var template:Template = new Template();
var templateBitmapData:BitmapData = new BitmapData(400, 400, true, 0x000000);
templateBitmapData.draw(template);
var texture:Texture = new Texture();
var rect:Rectangle = new Rectangle(0, 0, 400, 400);
var pt:Point = new Point(0, 0);
templateBitmapData.copyChannel(texture, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.RED);
templateBitmapData.copyChannel(texture, rect, pt, BitmapDataChannel.BLUE, BitmapDataChannel.BLUE);
templateBitmapData.copyChannel(texture, rect, pt, BitmapDataChannel.GREEN, BitmapDataChannel.GREEN);
var targetBitmap:Bitmap = new Bitmap(templateBitmapData);
addChild(targetBitmap);
Эмм... я вообщето предполагал тупо альфа-канал перенести на текстуру)))) А так действительно через #copyPixels() быстрее будет, задав параметр alphaBitmapData = templateBitmapData;
Zebestov
30.12.2010, 01:47
А не быстрее будет альфу в текстуру перенести?
Я думаю проблема в соответствии размеров текстуры и фигуры. Если они одинаковые - то можно попробовать, но что-то мне подсказывает, что чудес не бывает. А это значит нужна еще одна битмапдата в размер фигуры (она и пойдет в результирующий битмап), срисованная с текстуры и на которую уже можно кинуть альфаканал с битмапдаты, отрисованной с фигуры... мдя.. уж лучше copyPixels().
mikhailk
30.12.2010, 11:59
На самом деле, как раз скорость здесь принципиального значения не имеет.
Имеет значение простота.
Ну и чтобы лишние битмапдаты не плодить.
Вот я и говорю что один copyPixels проще и быстрее, чем три copyChannel. Да и по смыслу тут ничем копирование каналов не оправдано. В итоге Вы копируете просто пиксель, как он есть.
Байткодом точно можно это сделать. В нем описаны все векторные величины и способ заливки. Там достаточно поменять источник заливки на кастомный.
А зачем хак, когда это делается тремя строчками кода? Чтобы сохранить некую векторную "сущность" фигуры? Не проще уж тогда сохранить ее параметры отрисовки (вершины и тд) и перерисовать с новой битмап-заливкой?
Впрочем я все время забываю что кто-то еще рисует фигуры во Flash IDE..
mikhailk
31.12.2010, 11:38
Впрочем я все время забываю что кто-то еще рисует фигуры во Flash IDE..
Этих людей зовут дизайнерами и флеш-аниматорами.
И их тыщи. :D
И они не пишут флэш-приложения на ActionScript 3.0
В идеале, конечно))) А на деле - вот такие вопросы.
Я сам - дизайнер, если что. Но когда речь идет о создании программы, а не мультфильма - IDE даже не открываю.
mikhailk
31.12.2010, 21:31
анимацию персов грузим жипегами/пнгшками и собираем в мувиклипы программно? :)
или там "высокохудожественные" элементы интерфейса...
черт его знает, у нас так организовано
дизайнеры готовят графику до уровня мувиклипов и я получаю уже fla-шки
Но когда речь идет о создании программы, а не мультфильма
анимацию персов грузим жипегами/пнгшками и собираем в мувиклипы программно?Не надо искать противоречия там, где их нет. И да, Вы знаете, очень многие именно так и поступают - рендерят персов в 3Ds MAXe в пнг, склеивают в ленты/полотенца и собирают в клипы программно.
"высокохудожественные" элементы интерфейсаПомилуйте, уж либо Flash IDE, либо "высокохудожественные". Для последних я пожалуй выберу Фотошоп. Хотя в свое время извращался и с Флэшем. (http://flasher.ru/forum/showpost.php?p=586455&postcount=18)
mikhailk
01.01.2011, 14:35
Я так понимаю, мы говорим просто о методе промежуточного хранения графики, из которого, конечно, следуют свои методы загрузки и обработки, но не более. Потому что внутри приложения работаем в основном либо с мувиклипами, либо с битмапами.
Можно отрендерить перса, слепить в один лист, загрузить картинкой, порезать внутри приложения и собрать мувик (кто-то, кстати, вроде маску гонять пытается). Можно отрендерить перса, собрать его во FlashIDE как готовый мувик и загрузить в приложение внешнюю swf-библиотеку с этим мувиком и сразу использовать.
Можно нарисовать "высокохудожественный" интерфейс в Фотошопе заэмбедить пнгшкой его в код и там дооформлять кнопками и надписями. А можно нарисовать "высокохудожественный" интерфейс в Фотошопе (или, кстати, Люстре), загрузить его во FlashIDE, дооформить его надписями и простыми графическими кнопками и выдать уже как готовый интерфейсный мувик в составе swc-библиотеки.
Выгодность первого подхода для меня, честно говоря, не совсем очевидна.
Я так понимаю, мы говорим просто о методе промежуточного хранения графикиНу если так, то извините. Я как-то все больше о создании. И давайте-ка здесь завязывать с флудом. Не вижу смысла обсуждать в этой теме способы организации труда и количество рабочих мест в вашей конторе))).
mikhailk
01.01.2011, 19:07
Ок, на исходный вопрос ответ я получил.
Ничего нового, насколько я понимаю, никто все равно не предложит.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.