Flex 图形中每个形状的单独填充
Separate fill for each shape in Flex graphics
我在 sprite 上绘制了 2 个水平行中的一堆圆圈,并希望将渐变分别应用于每个圆圈,但 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();
}
感谢您的帮助!
编辑 - 我忘了这部分(可能相关也可能不相关)。在绘制圆圈之前,我还从一些 UI 元素的 ImageSnapshot 中绘制了 BitmapData 到精灵上。
解法:
我需要为每个圆分别创建一个新矩阵和 'createGradientBox'
m = new Matrix();
m.createGradientBox(spiralHoleRadius * 2, spiralHoleRadius * 2, 0, xc - spiralHoleRadius / 2, yc - spiralHoleRadius / 2);
以下是这个网站上的一个类似问题,也许它有帮助(我不能评论所以我把它放在一个答案中)
AS3: beginGradientFIll() doesn't make me a gradient!
我在 sprite 上绘制了 2 个水平行中的一堆圆圈,并希望将渐变分别应用于每个圆圈,但 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();
}
感谢您的帮助!
编辑 - 我忘了这部分(可能相关也可能不相关)。在绘制圆圈之前,我还从一些 UI 元素的 ImageSnapshot 中绘制了 BitmapData 到精灵上。
解法:
我需要为每个圆分别创建一个新矩阵和 'createGradientBox'
m = new Matrix();
m.createGradientBox(spiralHoleRadius * 2, spiralHoleRadius * 2, 0, xc - spiralHoleRadius / 2, yc - spiralHoleRadius / 2);
以下是这个网站上的一个类似问题,也许它有帮助(我不能评论所以我把它放在一个答案中) AS3: beginGradientFIll() doesn't make me a gradient!