PDA

Просмотр полной версии : BitmapData.merge() Наложение прозрачной картинки


wvxvw
20.03.2007, 19:15
function __draw(xx:Number, yy:Number):Void {
__layer2.clear();
drawCircle(__layer2, xx, yy, 20);
t_bmpd.dispose();
t_bmpd = new BitmapData(40+xx, 40+yy, true, 0x00ffffff);
t_bmpd.draw(__layer2);
__bmpd.merge(t_bmpd, new Rectangle(xx-20, yy-20, 40, 40), new Point(xx-20, yy-20), 256, 256, 256, 256);
__layer1.clear();
__layer1.beginBitmapFill(__bmpd, new Matrix(), true);
__layer1.moveTo(0, 0);
__layer1.lineTo(500, 0);
__layer1.lineTo(500, 300);
__layer1.lineTo(0, 300);
__layer1.lineTo(0, 0);
__layer1.endFill();
}
__draw - функция, вызывается при движении "кисточки" и получает координаты курсора.
__layer2 - клип, где созается временная картинка "кисточка"
drawCircle - функция, рисующая круг
t_bmpd - битмапДата, куда записывается, что было нарисовано в __layer2
__bmpd - битмапДата, куда записывается суммированный результат.
__layer1 - клип, закрашиваемый с использованием __bmpd.

Проблема - при наложении прозрачной области из первой битмапдаты на вторую получается опять прозрачная. А надо, чтобы оставалось, то, что было.
Помогите, пожалста разобраться... я чего-то никак не соображу :rolleyes:
Заранее спасибо.

etc
20.03.2007, 19:18
Проблема - при наложении прозрачной области из первой битмапдаты на вторую получается опять прозрачная. А надо, чтобы оставалось, то, что было.
Мне кажется, что здесь противоречие, нет?

wvxvw
20.03.2007, 19:24
Ок, да, не совсем понятно выразился:
* При наложении прозрачной области из перой битмапДаты на непрозрачную область из второй битмапдаты получаю прозрачную, а хочу получить ту, которая была до merge().

etc
20.03.2007, 19:40
Что-то мне кажется, что для alpha тебе надо 0 написать.

wvxvw
20.03.2007, 19:48
Если пишу 0, то вообще никакого наложения не происходит =/ (т.е. он все пикселы добавляет, как будто они прозрачные)

etc
20.03.2007, 20:19
Тогда тебе, возможно, нужен copyPixels.

wvxvw
20.03.2007, 20:29
Спасибо, да, это то, что нужно.