Actionscript 3 ActionScript线条样式颜色过早更改

Actionscript 3 ActionScript线条样式颜色过早更改,actionscript-3,graphics,line,draw,Actionscript 3,Graphics,Line,Draw,我试图在彼此旁边画线,但第一个颜色组的最后一条线在指定第二个颜色之前采用第二个颜色组的颜色。有人能解释一下吗 function drawCorner() { var corner:Sprite = new Sprite(); corner.graphics.beginFill(0x0, 1.0); corner.graphics.drawRect(0, 0, 20, 20); corner.graphics.lineStyle(0, 0x00FF00,

我试图在彼此旁边画线,但第一个颜色组的最后一条线在指定第二个颜色之前采用第二个颜色组的颜色。有人能解释一下吗

function drawCorner()
    {
    var corner:Sprite = new Sprite();
    corner.graphics.beginFill(0x0, 1.0);
    corner.graphics.drawRect(0, 0, 20, 20);

    corner.graphics.lineStyle(0, 0x00FF00, 1.0);    
    corner.graphics.moveTo(1, 13);
    corner.graphics.lineTo(13, 1);
    corner.graphics.moveTo(6, 13);
    corner.graphics.lineTo(13, 6);
    corner.graphics.moveTo(11, 13);
    corner.graphics.lineTo(13, 11);

    corner.graphics.lineStyle(0, 0xFF00FF, 1.0);    
    corner.graphics.moveTo(0, 13);
    corner.graphics.lineTo(13, 0);
    corner.graphics.moveTo(5, 13);
    corner.graphics.lineTo(13, 5);
    corner.graphics.moveTo(10, 13);
    corner.graphics.lineTo(13, 10);

    corner.graphics.endFill();

    addChild(corner);
    }

虽然我不能完全确定发生这种情况的原因,但它之所以发生是因为您放置了
corner.graphics.endFill()


在drawRect之后立即调用endFill,问题就解决了。

虽然我不完全确定发生这种情况的原因,但它之所以发生是因为您放置了
corner.graphics.endFill()

在drawRect之后立即调用endFill,问题就解决了。

您也可以将

corner.graphics.moveTo(0, 13);
在更改线型之前。

您还可以将

corner.graphics.moveTo(0, 13);

在更改线型之前。

它看起来应该可以工作。试着将每个块放入它自己的函数中,然后看看调用em时会发生什么。我将代码复制/粘贴到一个测试组件中,它按预期绘制:三条绿色对角线,其中一条红线从第一行偏移一个像素。也许发布一些周围的代码以获取更多线索?我已经用完整的函数更新了我的代码。如果在绘制后放大,您会注意到右下角的最短直线是相同的颜色。至少对我来说是这样。我使用的是最新的10.1 flash播放器。我只是在剧本上简单地画了两条不同颜色的平行线时遇到了同样的问题。它实际上与endFill()无关,或者至少在没有endFill()的情况下也可以发生,因为我的命令只有两组lineStyle()/moveTo()/lineTo()命令。将第二个lineStyle()放在第二个集合的moveTo()之后可以解决这个问题。那么你提交了Adobe bug报告了吗?我肯定这是个错误。我把这个问题忘得一干二净。长时间!不,彼得,我并没有把窃听器归档。如果你有时间的话,请回复。看起来应该可以。试着将每个块放入它自己的函数中,然后看看调用em时会发生什么。我将代码复制/粘贴到一个测试组件中,它按预期绘制:三条绿色对角线,其中一条红线从第一行偏移一个像素。也许发布一些周围的代码以获取更多线索?我已经用完整的函数更新了我的代码。如果在绘制后放大,您会注意到右下角的最短直线是相同的颜色。至少对我来说是这样。我使用的是最新的10.1 flash播放器。我只是在剧本上简单地画了两条不同颜色的平行线时遇到了同样的问题。它实际上与endFill()无关,或者至少在没有endFill()的情况下也可以发生,因为我的命令只有两组lineStyle()/moveTo()/lineTo()命令。将第二个lineStyle()放在第二个集合的moveTo()之后可以解决这个问题。那么你提交了Adobe bug报告了吗?我肯定这是个错误。我把这个问题忘得一干二净。长时间!不,彼得,我并没有把窃听器归档。如果你有时间,请回复。你是对的。不过,整个事情似乎有点违反直觉。甚至在改变线条颜色之前必须结束填充也有点可笑。我想我可以看出,在函数中最后一个结束填充并没有什么真正的好处,这样做会使代码更难阅读,但我还是想就此向adobe提出一个bug。你是对的。不过,整个事情似乎有点违反直觉。甚至在改变线条颜色之前必须结束填充也有点可笑。我想我可以看出,在函数中最后一个结束填充并没有什么真正的好处,这样做会使代码更难阅读,但我仍然想就此向adobe提出一个bug。