2015-08-31 1 views
0

Я рисую кучу кругов в 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); 

ответ

0

После является Двойники вопрос на этом сайте, может быть, это поможет (я не могу комментировать поэтому я положил это в ответ) AS3: beginGradientFIll() doesn't make me a gradient!

+0

Я смог вывести решение из этого вопроса/ответа после нескольких проб и ошибок. Оказывается, мне нужно было создать новую матрицу и применить «createGradientBox» к матрице для каждого круга индивидуально. –

Смежные вопросы