![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2006
Сообщений: 18
|
Здравствуйте.
Задача: Создать диагональную штриховку, на которую бы накладывался градиент. Программно. Как я это пытаюсь сделать: Создаю градиент (400x400): var gradient:Shape = new Shape(); var matrix:Matrix = new Matrix(); matrix.createGradientBox(400, 400, Math.PI/2, 0, 0); gradient.graphics.beginGradientFill(GradientType.LINEAR, [0x00FF00, 0x0000FF], [1, 1], [0, 255], matrix); gradient.graphics.drawRect(0, 0, 400, 400); addChild(gradient); //заполняем BitmapData var bitmapdata:BitmapData = new BitmapData(3, 3, true, 0x000000); bitmapdata.setPixel32(0, 1, 0xffffffff); bitmapdata.setPixel32(1, 0, 0xffffffff); bitmapdata.setPixel32(2, 2, 0xffffffff); //заливаем им Shape, который потом будет маской var mask:Shape = new Shape(); mask.graphics.beginBitmapFill(bitmapdata); mask.graphics.drawRect(0, 0, 400, 400); addChild(mask); |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 300
|
Я попробовал код, у меня он заработал, нужно было только переменную mask переименовать (иначе конфликт происходит).
Правда про штриховку не совсем понял, иллюстрация желаемого результата только ускорит решение проблемы. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 18
|
С переименованием или без у меня результат один и тот же.
Иллюстрации, учитывая, что фон черный: Цитата:
![]() gradient:Shape Цитата:
![]() mask:Shape Цитата:
![]() Цитата:
![]() |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
чтобы учитывалась прозрачность, надо кешировать в битмап (.casheAsBitmap = true)
var gradient:Shape = new Shape(); var matrix:Matrix = new Matrix(); matrix.createGradientBox(400, 400, Math.PI/2, 0, 0); gradient.graphics.beginGradientFill(GradientType.LINEAR, [0x00FF00, 0x0000FF], [1, 1], [0, 255], matrix); gradient.graphics.drawRect(0, 0, 400, 400); gradient.cacheAsBitmap = true; addChild(gradient); //заполняем BitmapData var bitmapdata:BitmapData = new BitmapData(3, 3, true, 0x000000); bitmapdata.setPixel32(0, 1, 0xffffffff); bitmapdata.setPixel32(1, 0, 0xffffffff); bitmapdata.setPixel32(2, 2, 0xffffffff); //заливаем им Shape, который потом будет маской var strokeMask:Shape = new Shape(); strokeMask.graphics.beginBitmapFill(bitmapdata); strokeMask.graphics.drawRect(0, 0, 400, 400); strokeMask.cacheAsBitmap = true; addChild(strokeMask); gradient.mask = strokeMask;
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 10.01.2011 в 09:44. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 18
|
Первоначальные варианты реализации включали casheAsBitmap, но видимо в другой интерпретации:)
Большое спасибо, все работает замечательно. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|