【发布时间】:2015-08-31 20:46:31
【问题描述】:
我在 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);
【问题讨论】:
标签: actionscript-3 apache-flex graphics drawing flex3