【问题标题】:Separate fill for each shape in Flex graphicsFlex 图形中每个形状的单独填充
【发布时间】: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


    【解决方案1】:

    以下是本网站上的一个类似问题,也许它有帮助(我无法发表评论,所以我把它放在答案中) AS3: beginGradientFIll() doesn't make me a gradient!

    【讨论】:

    • 经过反复试验,我能够从该问题/答案中推断出解决方案。结果我需要创建一个新矩阵并将“createGradientBox”分别应用于每个圆圈的矩阵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2013-10-21
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多