Я рисую кучу кругов в 2 горизонтальных строках по спрайту и хотел бы, чтобы градиент применялся к каждому кругу индивидуально, но flex применял его ко всей графической области. Что мне нужно изменить, чтобы рисовать каждый круг с собственным градиентом?Отдельная заливка для каждой фигуры в графике Flex
var s:Sprite = new Sprite();
var g:Graphics = s.graphics;
g.beginBitmapFill(bd, new Matrix(), false, false);
g.drawRect(0, 0, s.width, s.height);
g.endFill();
var m:Matrix = new Matrix();
g.lineStyle(1, 0x888888, 1);
for(var i:int = 0; i < numSpirals; i++) {
g.beginGradientFill(GradientType.LINEAR, [0x666666, 0xFFFFFF], [1, 1], [0, 255], m);
xc = i * spiralWidth + spiralHoleRadius;
yc = bdCenter - (spiralBoxHeight/2) + (spiralHoleRadius/2);
g.drawCircle(xc, yc, spiralHoleRadius);
g.endFill();
}
for(i = 0; i < numSpirals; i++) {
g.beginGradientFill(GradientType.LINEAR, [0x666666, 0xFFFFFF], [1, 1], [0, 255], m);
xc = i * spiralWidth + spiralHoleRadius;
yc = bdCenter + (spiralBoxHeight/2) - (spiralHoleRadius/2);
g.drawCircle(xc, yc, spiralHoleRadius);
g.endFill();
}
Благодарим за помощь!
Редактировать - Я забыл эту часть (может быть или не быть актуальной). Перед рисованием кругов я обратил BitmapData из ImageSnapshot некоторых элементов пользовательского интерфейса в спрайт.
Решение:
мне нужно, чтобы создать новую матрицу и «createGradientBox» для каждого круга в отдельности
m = new Matrix();
m.createGradientBox(spiralHoleRadius * 2, spiralHoleRadius * 2, 0, xc - spiralHoleRadius/2, yc - spiralHoleRadius/2);
Я смог вывести решение из этого вопроса/ответа после нескольких проб и ошибок. Оказывается, мне нужно было создать новую матрицу и применить «createGradientBox» к матрице для каждого круга индивидуально. –