【问题标题】:How to stop Flex / AIR XOR-ing a fill?如何停止 Flex / AIR XOR-ing 填充?
【发布时间】:2009-02-24 19:20:10
【问题描述】:

如果您尝试以下代码:

g.beginFill(0xFF0000);
g.drawRect(0, 0, 50, 50);
g.drawRect(25, 25, 50, 50);
g.endFill();

你会认为它会绘制 2 个重叠的红色方块。但是,它没有 - 它绘制了两个红色方块,重叠区域现在完全透明。

知道如何解决这个问题吗?

接受后的回答:

谢谢Christophe Herreman!将代码更改为:

g.beginFill(0xFF0000);
g.drawRect(0, 0, 50, 50);
g.endFill();
g.beginFill(0xFF0000);
g.drawRect(25, 25, 50, 50);
g.endFill();

按预期工作!我很想知道这是“预期行为”还是实际的错误!

【问题讨论】:

    标签: actionscript-3 graphics air flex3


    【解决方案1】:

    endFill() 之前的所有调用将只存储您要绘制的多边形的点,并在调用 endFill() 后将它们连接起来。由于您示例中的代码有重叠部分,因此在绘制多边形的实际线时将被过滤掉。我实际上不知道这是 Flash 播放器的预期行为还是错误。

    要解决这个问题,只需在绘制新矩形之前添加一个对 beginFill() 的新调用。

    g.beginFill(0xFF0000);
    g.drawRect(0, 0, 50, 50);
    g.beginFill(0xFF0000);
    g.drawRect(25, 25, 50, 50);
    g.endFill();
    

    【讨论】:

      【解决方案2】:

      您不需要创建第二个图形对象来应用第二个填充吗?我敢打赌,你确实有一个形状奇特的图形对象,而不是两个相交的矩形。

      【讨论】:

        猜你喜欢
        • 2017-10-04
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多